Hirdetés

2024. május 3., péntek

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

(#3701) Teasüti


Teasüti
nagyúr

Ezt hoztam össze:

Array.prototype.indexesOfGreatestNums = function () {
var result = new String, a = new Array, b = new Array; c = new Array;
a[0] = 0, b[0] = 0;
for (var i =0, j=0; i<this.length;i++) {
if (this[i]>0) {
if (a.indexOf(this[i].toString())>=0) {if (b[a.indexOf(this[i].toString())] !== undefined) {b[a.indexOf(this[i].toString())]++} else {b[a.indexOf(this[i].toString())]=1;};} else {
a[j] = this[i];
if (b[j] !== undefined) {b[j]++} else {b[j] = 1};
j++;
}; //end else
}; // end if
}; // end for
//var ok = popup('',a + '\n' + b,false,'','',30);
var that = this.slice(0);
for (i=0;i<a.length;i++) {
for (j=0;j<b[a.indexOf(Math.max.apply('',a).toString())];j++) {
//flash(that.join() +'\n'+ a.join());
c[j] = that.indexOf(Math.max.apply('',a).toString());
that[that.indexOf(Math.max.apply('',a).toString())] = 0;
}; //end for
result = result + c.join() + '>';
c = [];
a[a.indexOf(Math.max.apply('',a).toString())] = 0;
}; // end for
return(result);
}; // end prototype

Azt tudja, hogy egy számokból álló tömbből egy string-ben visszaadja az elemek értékei alapján csökkenő sorrendben az indexüket.
Azonos értékek indexei vesszővel elválasztva, különbözőké pedig ">" jellel. NaN elemekre nem érzékeny, ha meg az egész tömb csak nullákból áll, akkor meg csak egy ">" jelet ad vissza.

Pl:
var a = [0,0,1,1,5,12,5,0,0];
var b = a.indexesOfGreatestNums();

b = "5>4,6>2,3>"

Ezzel szeretném kiértékelni majd a telefonkönyves regex keresés eredményét, ahol a találatok számát mentem a fenti "a" tömbbe, amiben az indexek megegyeznek a névjegyzék tömbjével.

[ Szerkesztve ]

(#3702) Teasüti válasza Teasüti (#3701) üzenetére


Teasüti
nagyúr

Jah és ez az egész macera azért, mert az Array.indexOf() csak az első elemet dobja vissza, és nincs egy jó kereső metódus a natív Array() objektumban, így csináltam egyet magamnak.
(Gondolom ha majd vmikor elkezdtem használni vmelyik könyvtárat, akkor a homlokomhoz fogok csapni előbb-utóbb...)

(#3703) Karma válasza Teasüti (#3701) üzenetére


Karma
félisten

Remélem a tényleges kódban indentálsz, és csak a fórummotor miatt ilyen olvashatatlan... Emiatt (is) egy kicsit nehéz megítélni, hogy nem-e futsz túl hosszú köröket a probléma körül spirálban.

Például a kettővel ezelőtti kérdésnél nem értettem, hogy miért használsz push-t a tömbre - JavaScriptben a [] operátorral akármilyen indexnek tudsz értéket adni, nem kell kézzel növelgetni.

Meg amúgy az alapprobléma is olyan, hogy lehetnek rá kész algoritmusok. Maga a stringtávolság témakörben ott a Levenshtein távolság, bár telefonszámokhoz lehet overkill. Mondjuk regexelni is szinte biztosan (bár nem látom tisztán hogy hol jön a képbe).

[ Szerkesztve ]

“All nothings are not equal.”

(#3704) Teasüti válasza Karma (#3703) üzenetére


Teasüti
nagyúr

Nem, nem "indentálok".
Én olyan kemény vagyok, hogy még mindig a telefonon pötyögöm be a kódot, amin a szerkesztő nem tud tördelni. ;]
Néztem a jsFiddle-t, de nem tudom használni (próbáltam átírni te példáidat is, de a result panelra nem tudok írni... más debug kiíratás sem ment.). Próbáltam a böngésző konzolját is, de az se túl felhasználóbarát.

Inkább marad a natív környezet. Eddig még nem szúrtam el a zárójelezést egyszer sem. :B

Lássuk csak... Úgy működik, hogy először kigyűjti az "a" tömbbe az összes nullánál nagyobb számot és a "b" tömbben tárolja az előfordulások számát.
Majd lemásolja az input-ot, hogy az érintetlen maradjon és az "a" tömb hossza szerinti ciklusban meghívja a "b" előfordulások száma szerinti másik ciklust és a ciklusmagban meg megkeresi a kigyűjtött elemek indexeit az input-ból és berakja a "c" tömbbe. Mivel itt a Math.max függvényt használom masszívan, ezért jónak láttam nullázni az aktuális mentett elemet, hogy a következő előfordulást találhassa meg a függvény.
A "c" tömböt a beágyazott ciklus lefutása után minden menetben üríti az output string-be.

Kb ennyi.
Biztos hatékonyabban is meg lehet oldani, meg kevesebb erőforrással, de nem vagyok programozó, meg amúgy is egy szempillantás alatt végez még a telefon is.

Kérdés:
a meghívott function()-ökben deklarált változók ugye elszeparáltak a programtól?
Tehát a function()-ön belüli "var i=0" nem fog összeakadni abban a programban lévő változattal, amiben meghívtam a függvényt? (Abban a programban definiáltam a function()-t is.)

[ Szerkesztve ]

(#3705) Sk8erPeter válasza Teasüti (#3704) üzenetére


Sk8erPeter
nagyúr

"Nem, nem "indentálok"."
Gondolom ez csak irónia volt. :) Ha a Prohardveren beszúrsz egy kódot, akkor jelöld ki, és kattints a "Programkód" gombra, ne pedig simán a Monospace-re. Akkor megmarad indentálva. Ezeket a dolgokat tényleg el kell magyarázni? :DDD

"Néztem a jsFiddle-t, de nem tudom használni (próbáltam átírni te példáidat is, de a result panelra nem tudok írni... más debug kiíratás sem ment.)."
Őőő, megvan, mi az a "result" szó, mit is jelent? Ne oda akarj írni, hanem pl. a HTML-, JS- vagy CSS-panelra... :U Nyilván a JavaScript-kódok a JavaScript-panelra mennek, remélem, ezt nem kell elmagyarázni, miért. ;]
A jsFiddle-nél pedig a TidyUp gomb szolgálja azt a célt, hogy a kódod szebb legyen, mindegyik panelban szépíti.

"Próbáltam a böngésző konzolját is, de az se túl felhasználóbarát."
Miért is kellene, hogy felhasználóbarát legyen? Nem az a dolga.

"Inkább marad a natív környezet."
Milyen natív környezetről beszélsz?

"Eddig még nem szúrtam el a zárójelezést egyszer sem. :B"
Botrány. Ezek a mai fiatalok... :U :DDD Majd el fogod. Amúgy nem értem, ez a zárójelezős téma hogy jött ide, amikor Karma tanácsokat adott a tömbhasználathoz és az algoritmusodhoz... ;]

Amúgy meglehetősen gány, amit csinálsz, ez az összefűzögetős valami (annyira nem próbáltam meg értelmezni). Nem tudom, most hány elemmel kísérletezel, de amikor mondjuk lesz 1000 név a telefonkönyvben, amiből szűrni kell az általad mutatott módon, akkor nem biztos, hogy azonnal végezni fog vele például egy gyengébb procival rendelkező teló...

"a meghívott function()-ökben deklarált változók ugye elszeparáltak a programtól?"
Ez így elég rossz megfogalmazás, lokális változóknak hívják, amikről beszélsz, var kulcsszóval kell deklarálni őket JavaScriptben. Ha nincs var kulcsszó, akkor felmerülhet a probléma, hogy az adott függvényben esetleg globális változót felülírsz vele, aminek pontosan ugyanez a neve, és elérhető az adott scope-ból. Ha referenciákra vagy kíváncsi, kapcsolódó téma:
http://stackoverflow.com/questions/7744611/pass-variables-by-reference-in-javascript/7744623#7744623
http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language
http://stackoverflow.com/questions/13104494/does-javascript-pass-by-reference
csak hogy ne nekem kelljen elmagyarázni. :DDD
Egyébként más esetben a függvényeid nem fognak tudni egymás lokális változóiról.

[ Szerkesztve ]

Sk8erPeter

(#3706) Teasüti válasza Sk8erPeter (#3705) üzenetére


Teasüti
nagyúr

Ha a Prohardveren beszúrsz egy kódot, akkor jelöld ki, és kattints a "Programkód" gombra, ne pedig simán a Monospace-re. Akkor megmarad indentálva.
Nem irónia, tényleg így néz ki a kód.

Őőő, megvan, mi az a "result" szó, mit is jelent? Ne oda akarj írni, hanem pl. a HTML-, JS- vagy CSS-panelra...
[link] Itt is a result panelen van az eredmény.
Ezt így ahogy van másoltam a HTML kóddal együtt, de nekem nem működött a pre.innerHTML sor (ugye az küldi a result-ra a kimenetet?).

Milyen natív környezetről beszélsz?
A telefont, ami végső soron a program fog futni.

Amúgy nem értem, ez a zárójelezős téma hogy jött ide.
A fenti kód olvashatósága... az indentálás kapcsán.
Hogy én még nem zavarodtam bele.
Gondolom legalábbis, hogy ez miatt nehéz olvasni.

Nem tudom, most hány elemmel kísérletezel, de amikor mondjuk lesz 1000 név a telefonkönyvben, amiből szűrni kell az általad mutatott módon, akkor nem biztos, hogy azonnal végezni fog vele például egy gyengébb procival rendelkező teló...
Igaz nálam csak olyan ~50 név lehet, de a telefonom elég gyenge, vagy 4 éves modell.
Nem hinném, hogy a mai 1+ ghz-es telefonoknak ez gondot okozhatna.

Az utolsóra:

function akármi(izé) {
var "ez meg az";
return("ez meg az");
}

var "ez meg az" = function(izé);

Na ez így jó vagy rossz? :B
Asszem ugyanez érvényes az Array.prototype-ra is, azt is a program elejébe illesztem be és nem tudom a benne hazsnált változók össze akadhatnak-e a program többi változójával.
Értsd: a function()-ben lévő változók "lokálisabbak-e", mint a programban lévők? :D
De mindjárt olvasom a linkeket...

[ Szerkesztve ]

(#3707) Teasüti válasza Sk8erPeter (#3705) üzenetére


Teasüti
nagyúr

Amúgy meglehetősen gány, amit csinálsz, ez az összefűzögetős valami (annyira nem próbáltam meg értelmezni). Nem tudom, most hány elemmel kísérletezel, de amikor mondjuk lesz 1000 név a telefonkönyvben, amiből szűrni kell az általad mutatott módon, akkor nem biztos, hogy azonnal végezni fog vele például egy gyengébb procival rendelkező teló...

Feladat:
kellenek egy tömb - nem nulla - elemeinek indexei, de az elemek (számok) csökkenő sorrendjében.
Vagyis ki kell gyűjteni nem csak a legnagyobb elem indexét (haha rém egyszerű lenne egy közönséges Array.indexOf(Math.max()) függvénnyel, de az indexOf() megáll az első találatnál, szóval nem jó - kellenek a lehetséges alternatívák), hanem sorban az összeset.
Hogy fognál hozzá? :R

(#3708) Sk8erPeter válasza Teasüti (#3706) üzenetére


Sk8erPeter
nagyúr

"Nem irónia, tényleg így néz ki a kód."
Úristen, hát az kegyetlenül idétlen. Ez komoly, hogy így kódolsz? Még most szokj le erről, használj valami normális kódszerkesztőt, mert nem fogod átlátni a kódjaidat, most is átláthatatlan a bemásolt kód.
Tessék:
http://jsbeautifier.org/
Szépen indentálja a HTML- és főleg JS-kódokat is.
Ez alapján itt a kódod:
http://pastebin.com/zETLwnud
Kicsit másképp néz ki.

"[link] Itt is a result panelen van az eredmény."
Igen, de ne azt akard módosítani, hanem a kódot... :U

"Ezt így ahogy van másoltam a HTML kóddal együtt, de nekem nem működött a pre.innerHTML sor (ugye az küldi a result-ra a kimenetet?)."
Nem az "küldi a resultra a kimenetet"... Kis félreértés van itt. A result egyszerűen csak a kód eredményét, kimenetét mutatja, ugyanúgy, mintha te összepakolnád az oldalt ezekből a különböző részekből, aztán megnyitnád a böngésződben, lefutna a kód, és kiadna valamilyen eredményt. Ugyanazt mutatja ez is.

Van ez az elem a HTML-panelen:
<pre id="output">
Waiting...
</pre>

Aztán van a JavaScript-panelen ez a rész:
var pre = document.getElementById('output');
ez itt egy globális változó lesz, az output id-val rendelkező elemet kérted le, tároltad a "pre" változóba. (mármint Karma tette ezt)
van aztán ez a sor:
pre.innerHTML = lat + ", " + lng;
ez egyszerűen annyit jelent, hogy módosítod a HTML-tartalmát a "pre" elemnek, ami az előbb látható output id-val rendelkező elem. Belerakod vesszővel elválasztva a "lat" és "lng" változók tartalmát. És kész.

pre.innerHTML = textStatus;
Ez ugyanaz, csak itt a textStatus tartalmát pakolod bele (ez fog látszani a kimeneten is, mivel a "pre" egy látható elem, aminek a tartalma módosítva lett), ez az AJAX-kommunikáció során, hiba esetén meghívott callback-függvény, ez tehát annyit csinál, hogy egyszerűen megmutatja a válaszként kapott, hibaállapotról szóló szöveget a pre elemen belül.

"Nem hinném, hogy a mai 1+ ghz-es telefonoknak ez gondot okozhatna."
Tipikus rossz kódolási érv, a gányolások alkalmazásának alátámasztására. Ne így állj hozzá. És ha valaki nem 1+ GHz-es telefonnal nézi? Amúgy meg teljesen mindegy, mivel nézi, feleslegesen zabálni az erőforrásokat tök felesleges.

"function akármi(izé) {
var "ez meg az";
return("ez meg az");
}
var "ez meg az" = function(izé);
Na ez így jó vagy rossz? :B"

Ez most itt mi akart lenni? :DDD Kérdésre válaszolva: nagyon rossz. Konkrétan semmi értelme. Nem is értem, itt mit akartál. var kulcsszó után egy string?

"Asszem ugyanez érvényes az Array.prototype-ra is, azt is a program elejébe illesztem be és nem tudom a benne hazsnált változók össze akadhatnak-e a program többi változójával."
var kulcsszót használsz, nem.

"Értsd: a function()-ben lévő változók "lokálisabbak-e", mint a programban lévők? :D"
Ennek a kérdésnek semmi értelme. :)

Az algoritmusról pedig már korábban beszélgettetek, azt annyira nem követtem végig, hogy hogyan kell ezt érteni, a tömböd rendezve van-e, meg minden részletet nem tudok.

Amúgy hogy működik ez a Tasker? Nem ismerem a progit, csak annyit tudok róla, hogy mindenféle feladatot végre lehet hajtani vele Androidon, ütemezést is, meg egyebeket lehet vele intézni, de hogy kódolni hogyan lehet hozzá, arról fogalmam sincs, sosem olvastam még róla, vagy néztem utána.

[ Szerkesztve ]

Sk8erPeter

(#3709) Teasüti


Teasüti
nagyúr

Sziasztok!
Megint én. :B

XMLHttpRequest használatával egy HTML weblap letöltésének és parse feldolgozásának mi a módja plain JS kódban?

Ez alapján próbáltam elindulni, de a .title property-nél már hibát dob. Vmint a "this"-t se értem, hogy az mi akar itt lenni.

(#3710) Karma válasza Teasüti (#3709) üzenetére


Karma
félisten

Ez a kódrészlet feltételezi, hogy a fájl amit le akar tölteni a következőt tartalmazza:

<title>&amp;&<</title>

Egyébként nem mérvadó. Hasonlóan kéne benne reszelni mint egy XML-ben, legalábbis elvileg - én még sose próbáltam ilyet korábban.

A this meg az XMLHttpRequest objektum.

“All nothings are not equal.”

(#3711) Teasüti


Teasüti
nagyúr

jsFiddle-n belefutottam egy végtelen ciklusba. A böngészőm bezárta az ablakot. Azóta újra se tudom tölteni azt a linket. Mivel nem vagyok regisztrálva az oldalon, ezért gondolom minden munkám elveszett, ugye?

(#3712) Sk8erPeter válasza Teasüti (#3711) üzenetére


Sk8erPeter
nagyúr

Valószínűleg szopóálarc. Nem szokás ilyen helyen dolgozni. :DDD Amúgy ha válaszolnak neked, illik reagálni. ;]

Sk8erPeter

(#3713) Teasüti válasza Sk8erPeter (#3712) üzenetére


Teasüti
nagyúr

Én is erre jutottam. :(
Arra... nem akarok válaszolni. Fáradt voltam hozzá akkor, és most is.
Levontam belőle a tanulságot azért, köszi!

Tasker milyen program? Írtam róla egy cikket. De röviden szólva éppen ezt tudja, amit te is írtál.

És ha nem jsFiddle-szerű helyeken szokás dolgozni, akkor hol?
Ti ajánlottátok nekem, hogy erre való...
Amúgy tetszik, elégedett vagyok vele. Mindig Karma lapjait szerkesztem, ahol elő van készítve a pálya. :D Tud indentálni, meg validálni is. Kell nekem ennél több?

[ Szerkesztve ]

(#3714) Karma válasza Teasüti (#3713) üzenetére


Karma
félisten

Ha használtad a Fiddle mentés funkcióját, akkor a böngésző historyval vissza tudod hozni. Nem kell regisztrálni ehhez. De ha nem, akkor sajnos tényleg bukó :(

Offline fejlesztéshez egyébként én Bracketset szoktam használni.

“All nothings are not equal.”

(#3715) Sk8erPeter válasza Teasüti (#3713) üzenetére


Sk8erPeter
nagyúr

"Arra... nem akarok válaszolni. Fáradt voltam hozzá akkor, és most is."
Aha, elgondolkodtató, hogy akkor a jövőben mennyire fáradjunk mi a neked adott válaszokkal. Hidd el, nekünk is időbe kerül másoknak válaszokat írogatni, nekünk is van munkánk, tanulnivalónk, magánéletünk, azt a pár percet sem kell, hogy rád szánjuk, amit esetleg tudnánk. Könyörgöm, kissé fordítva ülsz a lovon. Te akarsz segítséget, de úgy csinálsz, mintha te tennél szívességet. Sosem értettem az ilyen hozzáállást a fórumokon. Mintha itt valami fizetett segítőgépek ülnének a gép előtt, és egész nap várnák a segítési lehetőséget. Hát nagyon nem.

"Tasker milyen program? Írtam róla egy cikket. De röviden szólva éppen ezt tudja, amit te is írtál."
Látom sikerült felfogni a kérdés lényegét. :W JavaScriptben programozol hozzá, ezzel kapcsolatban, meg a környezettel kérdeztem.

"És ha nem jsFiddle-szerű helyeken szokás dolgozni, akkor hol?
Ti ajánlottátok nekem, hogy erre való..."

Ne szívassál már... Szerinted mi hol mondtuk, hogy a jsFiddle munkára való? :W Segítek, sehol. Arra való, hogy prezentálj demókat másoknak, megosszatok kódokat, meg együtt lehessen segíteni a másiknak abban, hogy egy célfeladatot hogyan lehet megoldani. Van változatkezelője, jól működik, valóban van kódszépítési lehetőség, ezzel a másik munkáját könnyíted meg, adott esetben sajátodat is, ha nincs valami normális programozási környezeted épp, de bakker, nem arra való, hogy a napi munkádat ott végezd.
A JSBin egyébként elég gyakran ment, ha már...
Egyébként nem azt mondtad, hogy más nyelvekben már programoztál? Akkor eddig hogyan?

Sk8erPeter

(#3716) Karma válasza Sk8erPeter (#3715) üzenetére


Karma
félisten

Dobj be egy Sn*ckerst, ha éhes vagy teljesen kifordulsz magadból... :(

“All nothings are not equal.”

(#3717) Gave


Gave
addikt

Üdv!

A Linuxos (Mozilla) Firefox Js Engine-je lehetséges, hogy eltér a Windows verziótól? Ha igen, akkor miben? Elég furcsa anomáliák jelentkeznek olyan kóddal is ami egyébként 100%, hogy jó.

Keresgéltem forrást, de nem sok sikerrel.

Jó lenne valami támpont. Ha minden kötél szakad akkor Wine-al tesztelgetek, bár ezt nagyon nem szívesen tenném.

Köszi!

(#3718) Karma válasza Gave (#3717) üzenetére


Karma
félisten

Nem tűntt még fel ilyen, bár Linuxon szerencsére nagyon keveset dolgozom. Kicsit részleteznéd ezeket az anomáliákat?

“All nothings are not equal.”

(#3719) Teasüti válasza Sk8erPeter (#3715) üzenetére


Teasüti
nagyúr

JavaScriptben programozol hozzá, ezzel kapcsolatban, meg a környezettel kérdeztem.
Fingom sincs. Csak kontárkodok benne. :U De hogy mitől működik... Kézikönyvben nem esik szó a környezetről.
Egy-egy Android java referencia van hozzá, de sztem azok beemelt feature-ök. Vagy talán Android javascript interface - vagy ilyesmi.

Eddig minden alkalommal megköszöntem a segítséget, ennél többet nem ajánlhatok fel. Nem kötelező válaszolnod, ha úgy látod jónak. Fura amúgy ez a programozói attitűd, már ha full time programozó vagy. Mindig olyan nagyra vannak az idejükkel - persze vhol jogosan, hisz ebből élnek. És elefántot csinálnak a bolhából, a konvenciókból. :) De mindegy, itt én vagyok a vendég. A válaszod célt ért, ezt külön megköszönöm még egyszer. Nem érzem szükségességét tételesen reagálni rá. Az egy befejezett téma részemről.
Nem is értem miért van szükség magyarázkodásra.

Amúgy tisztában vagyok a fórumos segítségnyújtás fogalmával, egy egész topikot én vezetek. :U
Most hozakodjak elő én is a magánéletemmel?

Jah, amúgy nem. Nem programoztam ezelőtt egy nyelven sem. Középiskolás Pascal nyilván szánalmas példa lenne, ezért az nem is számít.

[ Szerkesztve ]

(#3720) Sk8erPeter válasza Teasüti (#3719) üzenetére


Sk8erPeter
nagyúr

Tegnap hajnalban valszeg jóval felháborodottabbnak tűnő hsz.-t sikerült írnom, mint amilyet akartam, vagy amilyet érdemes lett volna szánnom neked. :) Egyrészt késő/korán volt, másrészt számomra furcsa ez az "arra nem akarok válaszolni"-stílus, én ha segítséget kérek, akkor minden hsz.-re reagálok, akár csak egy böffentés erejéig is, nem a saját fáradtságomra hivatkozom, hogy legalább a segítségnyújtó vágja, hogy igen, átjött az üzenet, nem ignoráltam. Nem hinném, hogy "programozói attitűd" a szabadidő hasznos eltöltésének igénye (amúgy ha már kérdezted, nem vagyok "full time programozó"), ennek az általánosító jellegű kifordítása ("mindig olyan nagyra vannak az idejükkel [...] És elefántot csinálnak a bolhából, a konvenciókból") pedig meglehetősen vicces (véleménynyilvánítás a magas lóról, miközben eddig az ellenkezője igazolódott be :) ), ha ez igaz lenne, akkor nem kaptál volna már annyi segítséget itt a fórumon olyan kérdésekre, amelyeknek te is utánanézhettél volna Google barátod segítségével. Sztem nem konvenció (főleg nem programozói) az, hogy válaszolok a segítségnyújtónak (nem csak magamról beszélek), ez egyszerűen netikett. :) De igazad van, tényleg nem volt érdemes így reagálni, felesleges volt az egészet felhozni, egyszerűen mások vagyunk. :K Tegnap ezt dobta a gép, sorry. Peace!

Hogy valami hasznosat is írjak, a Sublime Text egy igen jó kis szerkesztőprogi a viszonylag kis erőforrás-igényűek közül. Persze ments folyamatosan kódoláskor. (Általában én nem szeretem bekapcsolni, de van autosave funkciója is emlékeim szerint.)

(#3716) Karma :
jogos, a magyarázat fentebb. :D

[ Szerkesztve ]

Sk8erPeter

(#3721) Sk8erPeter válasza Gave (#3717) üzenetére


Sk8erPeter
nagyúr

Eddig én sem tapasztaltam, de tényleg biztos, hogy jó az a JS-kód? Pl. JSLint vagy JSHint segítségével tudsz ellenőrizgetni (persze bizonyos túl szigorú szabályok kikapcsolásával).

Sk8erPeter

(#3722) Sk8erPeter válasza Karma (#3714) üzenetére


Sk8erPeter
nagyúr

"Offline fejlesztéshez egyébként én Bracketset szoktam használni."
Nem használtam még, milyen extrákat tud átlag szövegszerkesztőkhöz képest, ami miatt ezt használod? Csak mert ha van valami plusz pont, akkor szívesen tesztelgetem egy darabig. (Honlapra való gyors ránézésből nem derült ki, van-e valami extra, ami miatt adott célra mondjuk pl. a Sublime Textet kiválthatná.)

Sk8erPeter

(#3723) Teasüti válasza Sk8erPeter (#3720) üzenetére


Teasüti
nagyúr

A programozói attitűdhöz: van egy-egy ilyen ismerősöm, köztük vérbeli kocka is, aki lehúzott redőnyökkel pijamában éli a magányos életét begubózva - van egy-két furcsasága az életszemléletében szó mi szó. :) Van róla minimális fogalmam, milyen értékrendet követnek a programozók. :B Aztán ott vannak a mérnökinfós szaktársak is. igaz ott is elég nagy a szórás az oda nem való emberek bulizós életvitelétől a burokban élő kockákig bezáróan.
Szóval itt sem lehet beskatulyázni mindenkit, talán ez a szűkebb réteg és amúgy egészséges családi életet él a többség. Nem fair általánosítani igazad van, de az ilyen heves reakciók erre engedtek következtetni. Elnézést érte! :R

Ontopic:

jsFiddle nem futtatja le ezt akárhogy próbálkozom, mi lehet a hiba?
Egy tömb string elemének egy karakterére próbálok hivatkozni.
Array[j][0] ami a j elem első karakterét adja vissza.
Ez egészen addig működik, amíg manuálisan írom be a karakter indexét.
De megáll működni, amint változót próbálok használni: :(

var d = Number(this[i].length);
flash('ok\n' + this[i][d]); //debug kiíratás

Vagy egyszerűbben:

this[i][this[i].length]

Undefined az eredményem. Nem értem. :F
Ki tudnátok segíteni? Így hirtelen azt se tudom hogy induljak el Google-n.

[ Szerkesztve ]

(#3724) Karma válasza Sk8erPeter (#3722) üzenetére


Karma
félisten

Én meg a Sublime Textet nem ismerem. :)

A Bracketsben két elég jó feature-t használok intenzíven: a Chrome-mal összekötött live preview (minden módosítás a HTML/CSS-ben azonnal látszik, és amin éppen állok a szerkesztőben highligholódik a böngészőben), meg az intgrált JSLint. Meg a JS autocomplete is elég jó.

Teasüti: Azonnal.

[ Szerkesztve ]

“All nothings are not equal.”

(#3725) wis válasza Teasüti (#3723) üzenetére


wis
tag

A tömbök első eleme a 0, az utolsó a this[i].length-1

(#3726) Karma válasza Teasüti (#3723) üzenetére


Karma
félisten

Hát, az biztos probléma, hogy a példakódodban a lengthedik karaktert akarod kivenni a stringből, csakhát közben a betűket a JavaScript (hasonlóan egy csomó más nyelvhez) 0-tól length-1-ig indexeli.

Másrészt nem kell a Number konstruktor, mert a length mindig szám.
Lassú voltam :)

[ Szerkesztve ]

“All nothings are not equal.”

(#3727) Teasüti


Teasüti
nagyúr

Az fura, emiatt is.
De jó észrevétel.
Ez esetben akkor... Hát persze! A substring() meg nem veszi a To paraméterben foglalt indexet. Ugye? :B

Köszönöm! :R

[ Szerkesztve ]

(#3728) Karma válasza Teasüti (#3727) üzenetére


Karma
félisten

Így van, balról zárt, jobbról nyílt intervallumot használ :)

“All nothings are not equal.”

(#3729) Karma válasza Teasüti (#3727) üzenetére


Karma
félisten

Ha már úgyis redundáns amit írtam, hadd egészítsem ki azzal, hogy a slice(0, -1) tisztább, szárazabb, biztonságosabb; de elsősorban jobban olvasható függvény ugyanerre a célra.

“All nothings are not equal.”

(#3730) Teasüti


Teasüti
nagyúr

A

do
{ciklus mag;
i++;}
while (i<50 || másik feltétel)

kódrészlet vmiért ugyanúgy végtelen ciklusba fullad, pedig nem kéne neki.
A while feltételénél nem tudok használni logikai operátorokat - and, or?
A kísérlet idejére beraktam egy számlálót is azt remélve, hogy megvéd a végtelen ciklusoktól.
De nem jött be. :F

(#3731) Teasüti válasza Teasüti (#3730) üzenetére


Teasüti
nagyúr

Ok, megtaláltam.
&& a megoldás. :B

(#3732) GG888 válasza Karma (#3724) üzenetére


GG888
senior tag

Nagyon fain a sublime, de ha nincs licenszelve, akkor kicsit irritáló tud lenni, random mentéseknél felugrál, egy alertbox, hogy vegyélmeg.
Persze torrentről még soha nem hallottam... mondjuk ez talán pont olyan dolog, amit értékelek annyira (ha már a keresetem nagyrészét ilyen jellegű munkák teszik ki), hogy szerintem ebbe be fogok fektetni :)

pcmodding.hu | PC MODDING | Minden, ami modding, verhetetlen árak.

(#3733) vz12 válasza GG888 (#3732) üzenetére


vz12
tag

A JS számolások aritmetikai pontosságának növelésére van-e valakinek valamilyen ötlete?
Mert a beépített számomra egy kicsit igénytelen, kicsit durvának tartom hogy már egy egyszerű szorzásra is pontatlan ( illetve vagy pontatlan, vagy nem ! ), megengedő módon a gyökvonást még valamennyire megérteném ...
pl.1: 17 * 1.1 = 18.700000000000003
pl.2: 7410 * 0.43 = 3186.2999999999997
pl.3: Math.pow(Math.sqrt(1.5),2) = 1.4999999999999998
pl.4: Math.pow(1.6,2) = 2.5600000000000005

Én elkövettem magamnak egy ki/bekapcsolható "automatikus decimális kerekítés"-t, ami nem fix, hanem rugalmas hosszúságban próbál decimálisan kerekíteni. Ez egy bizonyos határig remekül működik, pl. a fenti esetekben is, de nagyobb számok esetén (mondjuk 10 jegyű számok felett), vagy túl sok tizedesjegy esetén már hatástalan. A kikapcsolhatóságot is bele kellett tenni, hogy amikor nem kell, akkor azért ne kerekítsen, mert úgy jobban meghamisítja az eredményt, mint a "gyári" pontatlanság.
De ez igazából barkácsolás, pótmegoldás. A korrekt az lenne, ha a JS egy "rendesebb" aritmetikát használna, ennek ellenére ha valakinek lenne valami jó ötlete, azt megköszönném.

(#3735) vz12 válasza Sk8erPeter (#3734) üzenetére


vz12
tag

Köszi, majd ráérő időmben tanulmányozni fogom ezeket.

(#3736) Lacces


Lacces
őstag

Hali,

Kellene egy kis help, vagy módszertan, link, példa, stb. :)

Van az index.php fájl, ahol definiálok JavaScript változókat, amiknek az értéke PHP adja.

var JSVariable = PHPValue;
var JSTurn = 0;

Aztán van egy külső js file, ahol meg függvények (ami a html head-ben hívódik meg)

function foo(JSVariable){
//todo
JSTurn = 1;
}

És ebből látszik, hogy átkéne neki adni a JSVariable-t illetve az index.php oldalon tárolt JSTurn értékét is módosítanám.

Igazából meg lehetne ezt így úgy, amúgy is oldani. De nem tudom, hogy esetleg erre lennének kitalálva más JS libraryk, keretrendszerek?
Vagy mi lenne a legszebb megoldás? :R

(#3737) martonx válasza Lacces (#3736) üzenetére


martonx
veterán

Esetleg, ha a konkrét feladatot írnád le, nem pedig egy megvalósítást, akkor lehet jobban tudnánk tanácsot adni.

Én kérek elnézést!

(#3738) SirRasor


SirRasor
őstag

Üdv mindenkinek!

Külön üdv martonx :) JAVA-t kell tanulnom, mert a cég, amit kinéztem JAVA programozókat keres és ezért a közvetítőcégnél tesztet kell írni html+css+js-ből, azért foglalkozok most ezzel :W

Van egy honlap és a loginjét szerettem volna átírni JS-es ellenőrzősre. Eddig csak PHP-val volt megvalósítva, úgyhogy bele is vágtam. Név és jelszóhelyességeket rendesen kiszűrni, majd amikor minden ok, akkor AJAX(nem Jquery-s!)-osan lekérem az adatbázisból, hogy jó-e a név és a jelszó. Ha nem, akkor az ajaxban elküldött php-vel kiíratom, hogy rossz név meg jelszó, de ha jó, akkor irányítson át a kezdőlapra.

Nem megy az átirányítás :(

1. megoldás: header("Location: cím"); a PHP fájlban(amit elküld az ajax), ami sajnos csak az aktuális DIV-be tölti az egész oldalt, ami no go. Saját honlapomnál ezt használom és a fő DIV-ben csinálom, majd belenyomok mindent. Nem a legjobb, de ott nem gond és működik. Ide nem jó :(

2. megoldás: az elküldött PHP-n belül JS: window.location = "cím"; DE gondolom a feldolgozás miatt nem működik, mintha nem is értelmezné a JS->PHP->JS-t.

X. megoldás: vagy ha jók az adatok, akkor ne irányítson a kezdőlapra, hanem van jobb megoldás is?

Make Love not war!

(#3739) SirRasor válasza SirRasor (#3738) üzenetére


SirRasor
őstag

Edit: Rájöttem a megoldásra. Az okosok azt mondják, hogy szükség van szerver oldali ellenőrzésre is, mert CSAK.
A fenti példával meg sikeresen kikerültem azt, úgyhogy akkor az adatbázisos név/jelszóellenőrzés megy át nyers PHP-ba és kész :) Akkor viszont nem kell ide ajax és megy simán az átirányítás.

Na még szerencse, hogy megkérdeztem, de azért thx a segítséget mindenkinek.

Make Love not war!

(#3740) Sk8erPeter válasza SirRasor (#3738) üzenetére


Sk8erPeter
nagyúr

http://stackoverflow.com/questions/4505798/difference-between-window-location-assign-and-window-location-replace

röviden:
window.location.replace('http://example.com/'); // http://example.com/ oldalra fog átirányítani...

(OFF: hogy jön ide a Java?)

====

(#3739) SirRasor :
"Az okosok azt mondják, hogy szükség van szerver oldali ellenőrzésre is, mert CSAK."
A "CSAK"-nál értelmesebb magyarázat is létezik rá, hogy vajon miért van szükség szerveroldali ellenőrzésre JELSZÓVAL történő BEJELENTKEZÉS esetén, amit egy pici gondolkodással is kitalálhat az ember: szerinted az jó lenne, ha a jelszóellenőrzés kliensoldali, bárki által megtekinthető kódban történne?

Ettől még ez nem zárja ki az AJAX-os bejelentkezést, szerveroldali ellenőrzést, majd lap-újrafrissítést (hogy elcseszett adatok esetén ne frissüljön újra a teljes lap, mert az csúfnak tűnhet), nem is igazán értem a problémádat, valószínűleg valami nagy félreértésben vagy. :)

[ Szerkesztve ]

Sk8erPeter

(#3741) SirRasor válasza Sk8erPeter (#3740) üzenetére


SirRasor
őstag

Mint írtam, az ajaxos feldolgozott PHP-ban nem működik a JS, de azért thx. EDIT: persze az is lehet, hogy az ingyenes webhostingos korlátozásról van szó, mert eleinte sessiont se akart.

EDIT2: A CSAK-ot meg úgy értem, hogy nem firtatom, hanem betartom.

Irónikusan jön ide a JAVA. Tehát JS-ből íratnak tesztet, mert JAVA kell nekik. Szerintem elég világos volt :P

[ Szerkesztve ]

Make Love not war!

(#3742) SirRasor


SirRasor
őstag

Úúú a mocskos életbe megvan a megoldás és még egyszerű is volt eme pár óra távlatából :))

xmlhttp.send(); után hiába néztem meg az xmlhttp.responseText értékét, az aszinkron mód miatt mindig üres volt, ezért ezt a fajta megközelítést elvetettem már az elején és próbáltam máshol megoldást keresni. Viszont szinkron módban jön is vissza a válasz rendesen és így nem kell mélyebben gányolni :)

Make Love not war!

(#3743) Karma válasza SirRasor (#3742) üzenetére


Karma
félisten

A szinkron XHR-nél nagyobb gányolást nehéz eszközölni :U

“All nothings are not equal.”

(#3744) SirRasor válasza Karma (#3743) üzenetére


SirRasor
őstag

Nyitott vagyok bármilyen más, működő megoldásra, ami szól a feldolgozás végén és a feldolgozott dokumentumból képes visszaadni értéket.

Make Love not war!

(#3745) martonx válasza SirRasor (#3744) üzenetére


martonx
veterán

Úgy hívják Ajax. Aszinkron Javascript And Xml. Azaz aszinkron módon kellene megoldanod, még ha ezt a fajta programozást kicsit szoknod is kell. Ilyenkor fel kell iratkoznod eseményekre, amik akkor következnek be, amikor az aszinkron feladat véget ért. Ez a szép megoldás.

Konkrétabban direkt nem írom le, gugli a barátod, meg rengeteg szakkönyv van ebben a témában. Bevallom nem olvastam végig mindazt a küzdelmet, amit írtál. Ugye a Java-t nem kevered össze a Javascripttel? A legelején írtad, hogy java-ban kell programoznod, de végig javascriptről beszéltünk. Ugye nem keverednek a fogalmak? Én kérek elnézést, hogy ezt megkérdeztem. :B

Én kérek elnézést!

(#3746) Karma válasza SirRasor (#3744) üzenetére


Karma
félisten

Vanilla JS-ben az onreadystatechangedhez berakni egy callback függvényt se nagy varázslat, de a legtöbb JS framework ad valami kulturáltabb még tisztább megoldást.

Én személy szerint deferred/promise párti vagyok, de a böngésző JS motorjának befagyasztásánál tényleg minden lehetőség jobb.

“All nothings are not equal.”

(#3747) SirRasor válasza martonx (#3745) üzenetére


SirRasor
őstag

Asszem meg is találtam a kellő példát gugliban, csak még ki kell bogarásznom. Tipikus példája az azt sem értem, hogy mit nem értem-nek. Na de találtam lynda.com-os AJAX oktatóanyagot, úgyhogy no para.

Nem keverem a java-t a javascripttel, csak azt nem értem, hogy egy java-s munkához miért elvárás a javascript és nem a java :DD Úgyhogy nagy nehezen eldöntöttem, hogy a JAVA-ra specializálódok és istenkirálycsászár profi leszek benne minden szinten, erre föl most tanulom a JS-t, mert csak úgy lehet bejutni :P Szóval csak így jött ide.

Make Love not war!

(#3748) Jim-Y válasza SirRasor (#3747) üzenetére


Jim-Y
veterán

Ha pl JavaEE-s projektre kerülnél ott előjöhet a js is, gondolom ezért, illetve még ezer helyen visszaköszönhet a js. Egy alap tudás belőle nem árthat :)

(#3749) Sk8erPeter válasza SirRasor (#3747) üzenetére


Sk8erPeter
nagyúr

Csatlakozva Jim-Y gondolatához a Java ugyanúgy elképzelhető webes területen szerveroldali nyelvként, mint a PHP vagy ASP.NET, ergo lehet, hogy a cég azért várja el, hogy ilyen ismereteid legyenek, mert konkrétan webfejlesztésre fogod használni a Java nyelvet. :DDD Amihez meg a HTML+CSS+JavaScript (+általában valamilyen library, pl. jQuery, mivel a keretrendszerek is sokszor használják ezeket) tudás természetesen elengedhetetlen. Erről persze neked kéne tudnod a pontosabb infókat. :)

Plusz csatlakozom az előttem szólókhoz, ne szinkron módon oldd meg a feladatodat, ha már AJAX volt a kérés (ami alapvetően aszinkron), meg amúgy sem, mert az elég kellemetlen, amikor egy hosszabb prüntyögés (kommunikáció a szerverrel oda-vissza) befagyasztja a GUI-t a böngészőben.
Az aszinkron megoldásnál az ún. callback-ek használata (ha nem használsz advanced-ebb megoldást, amiket Karma említett) leegyszerűsítve csak annyi, hogy megmondod előre, hogy majd ezt meg azt a függvényt hívd meg légy szíves, ha végeztél a feladatoddal.

Sk8erPeter

(#3750) Zedz


Zedz
addikt

Sziasztok!

Jól tudom, hogy egy Javascript fájl csak akkor töltődik újra, ha a weboldal is? Szétnéztem a neten és nem nagyon találtam olyat, hogy valamivel újratöltessem a szkriptet weboldal frissítés nélkül.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.