-
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
-
válasz Sk8erPeter #5898 üzenetére
Már megoldottam.
Nem. Van egy mappa. Ebben csak képek vannak. A listFiles a Taskerben valami ilyesmit ad vissza:
/Mappa/Kep1.jpg
/Mappa/Kep2.jpg
[…]Na nekem az az ötletem támadt, hogy nyomok egy splittet a \n-re, azaz a sortörésekre és ezt belementem 'i' -be. Ekkor ha pl a /Mappa/Kep1.jpg-t szeretném kiiratni, akkor az i[0] kell nekem. Tehát a tömb nulladik eleme. Namost ennek a tömbnek a lenghtje alapján generáltatok vele egy random számot. (Math.floor) Majd ezt a random számot állítom be háttérnek. Eddig működött a dolog. Viszont azt is szerettem volna, ha az előző háttér tömbbeli értékét ne sorsolja ki még 1x, illetve nulla se legyen az a szám, amit így kapok, erre kellett volna nelem a for. A for azt nézte volna meg, hogy az előzőleg "I" Taskeres globális változóval egyezik-e a most generált szám. Ha igen, akkor addig futtatja, míg más nem lesz a kapott eredmény. Csak közbe rájöttem, hogy az amit összedobtam több sebből vérzik. (Pl a setGlobal a forban ) Ezeket közben kijavítottam és while-ra cseréltem a for-t. Ezt sikerült összehozni, ami működőképesnek látszik:
var Hatterek =listFiles("Hatterek", false).split("\n");
var number = Math.floor( Math.random()*(Hatterek.length));
while(number == global('OldScrBcg')) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
while(number == 0) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
setGlobal('OldScrBcg',number);
setWallpaper(Hatterek[number]);Eleinte angol billentzuyetet akartam. De aztán megismerkedtem a nagy 'Ő'-vel!
-
fordfairlane
veterán
válasz Mr Dini #5901 üzenetére
1. a var kulcsszót egyszer kell használni a number nevű változó esetében, mondjuk mikor először adsz neki értéket.
2. ha csak egy kép van, a while végtelen ciklust eredményez.
3. Ha number nem lehet nulla, mert a setWallpaper nem nullával indexeli a háttérképeket, akkor egyszerűbb a randomszám generálást úgy megírni, hogy egytől kezdődően dobjon számokat.Math.floor(Math.random() * (max - min)) + min;
azaz jelen esetben
Math.floor(Math.random() * (Hatterek.length - 1)) + 1;
4. Elég a while ciklusban randomszámot generálni, nem kell két Math.random sor.
Szóval ebben a formában valami ilyesmi célszerűbb:
var Hatterek = listFiles("Hatterek", false).split("\n");
var number;
if(Hatterek.length > 1) {
while(number == global('OldScrBcg')) {
number = Math.floor(Math.random() * (Hatterek.length - 1) + 1);
}
} else if(Hatterek.length == 1) {
number = 1;
}
if(number) {
setGlobal('OldScrBcg', number);
setWallpaper(Hatterek[number]);
}x gon' give it to ya
-
dqdb
nagyúr
válasz fordfairlane #5902 üzenetére
Még while sem kell:
var Hatterek = listFiles("Hatterek", false).split("\n");
var number;if(Hatterek.length > 1) {
number = Math.floor(Math.random() * (Hatterek.length - 2) + 1);
if (number >= global('OldScrBcg')) {
number++;
}
} else if(Hatterek.length == 1) {
number = 1;
}if(number) {
setGlobal('OldScrBcg', number);
setWallpaper(Hatterek[number]);
}tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
Köszi mindkettőtöknek!
Majd kipróbálom!
Eleinte angol billentzuyetet akartam. De aztán megismerkedtem a nagy 'Ő'-vel!
-
Aureal
senior tag
Egy tömb adott elemét közvetlenül le lehet kérni, vagy csak egy ciklussal addig "pullozom", még a kívánt elemszámot el nem érem?
Pl. ha egy 10 elemes tömb 5. elemére van szükségem?[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Végigmész a tömb elemein, egyenként megvizsgálod őket, és ha az adott szám páros, akkor belerakod az elemet egy új tömbbe. Jobbat nem tudsz, ilyenkor muszáj végigiterálni a tömb összes elemén, különben honnan tudnád, melyik a páros?
A Jim-Y által említett módszer is pont ezt csinálja, csak ez egy rövidebben leírható módszer ugyanarra, amit írtam. (Azt nem tudom, van-e érdemi sebességbeli előny vagy hátrány a hagyományos for ciklushoz és tömbbe pakolós módszerhez képest.)Sk8erPeter
-
Jim-Y
veterán
válasz Sk8erPeter #5917 üzenetére
"Azt nem tudom, van-e érdemi sebességbeli előny vagy hátrány a hagyományos for ciklushoz és tömbbe pakolós módszerhez képest."
Előny az írásmódban van, sebességben nincs, sőt, elméletileg lassabbnak is kéne lennie a filternek picivel mert:
- belül ez is csak egy for ciklust használ
- de pluszban vannak ellenőrzések, hogy egyáltalán tömb-e amin meghívjuk, stb..De a különbségek elhanyagolhatóak, biztos hogy egy átlagos js projektnél nem ez lesz a szűk keresztmetszet. Akkor pedig a filter elegánsabb, tömörebb, jobban olvashatóbb, leíróbb, chainelhető. Meg hát úgy egyáltalán egy újabb absztrakciós réteg (sort of)
-
Sk8erPeter
nagyúr
Egyetértünk Persze egy kezdőnek eleinte magic lehet, hogy ez a háttérben mit csinál, de egyébként tényleg szebb. Más a helyzet, ha mást is kell vizsgálni a tömb elemein, akkor érdemes lehet spórolni a szükséges műveletek számán, és "hagyományos" módszerekhez folyamodni.
Sk8erPeter
-
Jim-Y
veterán
válasz martonx #5921 üzenetére
Amúgy nem ezt hívják lambdának, mármint..ezt is, de lambda már ES5-ben is volt. Ezt fat arrow-nak hívják ami egy rövidebb syntactic sugar a function expressiönök helyett és lexikálisan bindolja a this-t, kvázi block scoping. Az ES6 pedig már hivatalos az más kérdés a hogy a különböző vendorok még nem implementálták az összes ES6-os feature-t.
-
Jim-Y
veterán
válasz Sk8erPeter #5923 üzenetére
Hát de mi az, hogy magic? Ez a legújabb szabvány, ez a nyelv része, ha magic akkor nem érti a nyelvet és még tanulni kell Nekem senki ne próbálja meg eladni, hogy ne ezt írjam egy kezdőnek, ha nem érti, semmi gond, csapja fel a doksit és olvassa el, hogy mit jelent. Most ha curryztem volna meg ez-meg-az akkor még megértem, de ez egy nyelvi elem még csak nem is magic
Illetve én olyan példát szeretek mutatni ami előre viszi az embereket nem stagnál vagy visszahúzza. Ha például foglalkozik ezzel és megtetszik neki, majd netántán ezzel fog foglalkozni, akkor sokkal jobb ha már tudja, hogy mi az hogy fat arrow meg block scoping meg főleg, hogy mi az hogy [].filter.
p.s: szerinted egy filter + fat arrow már poweruser kategória? Mármint komolyan kérdezem
[ Szerkesztve ]
-
tick
aktív tag
Sziasztok! Hogyan tudnám megoldani hogy egy objektum pl egy óránként elindítson egy függvényt? ("magára")
Konkrétan egy nodejs modulról van szó, DB pool object. (ibm_db npm)
Szépen és jól működik de ha túl sok kapcsolat nyílik egy hirtelen peak miatt (vagy ha valaki rátenyerel az F5-re) akkor azok végleg ott is maradnak. Ez nyilván feleslegesen foglalja a pool-okat és a kapcsolatokat is. Nem találtam lehetőséget unused timeout-ra.
A forrásba belenyúlva sikerült megoldani hogy minden egyes kapcsolat záráskor (amikor egy "thread" visszakerül az elérhető kapcsolatok közé a használtak közül) indítson egy cleanUp függvényt és ténylegesen zárjon le minden olyan kapcsolatot ami X időnél régebb óta idle. Ez viszont nekem nem tűnik túl elegáns megoldásnak.
Lehetne még cron-ból futtatni egy npm scriptet, ez viszont utómunkát igényel implementálás után és mondjuk egy win-es rendszeren nem mindenki tudja hova kell nyúlni hirtelen.
Bármilyen ötletet szívesen fogadokEverything that has a beginning... has an end
-
Sk8erPeter
nagyúr
Igen, szerintem ne egy filter és egy fat arrow megértésével kezdje valaki, amíg gondot okoz neki, hogy kigyűjtse egy tömbből a páros számokat, tehát még nem tiszta számára, hogy mit jelent egy for/while ciklus. Kezdőként Te sem syntactic sugart raktál a kávédba hagyományos cukor helyett. Gondolj bele, mit fog fel egy kezdő abból, ha azt írod neki, hogy "Ezt fat arrow-nak hívják ami egy rövidebb syntactic sugar a function expressiönök helyett és lexikálisan bindolja a this-t, kvázi block scoping."
Sk8erPeter
-
Jim-Y
veterán
válasz Sk8erPeter #5926 üzenetére
De ezt a mondatot neked írtam és nem neki. Az ő szemszögéből az, hogy azt írjuk, hogy
function(num) { return num % 2 === 0 } vagy
num => num % 2 === 0az irreleváns, mert a lényeg a filter használata és, hogy az, hogy páros valami úgy nézzük meg, hogy x osztva kettővel a maradék nulla-e.
-
PumpkinSeed
addikt
Olyan kérdésem lenne, hogy mi a problémája az if feltételemben lévő 0 indexel ebben a kódban? Pont az if előtt kiíratom a teljes feltételt és hiba nélkül lefut, aztán az if-en belül pedig elszáll...
"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
-
dqdb
nagyúr
válasz PumpkinSeed #5929 üzenetére
Nem a feltétel száll el, hanem az értékadás. Az pedig azért, mert a kétdimenziós tömbként kezelt freehours feltöltése nem történt meg megfelelően. Ezért a freehours[ i ][j]-ből a freehours[ i ] már undefined értékre fut, így az undefined[j] utasítás próbál meg lefutni, nyilván sikertelenül.
[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
-
martonx
veterán
Ki mennyire vágja a gulp-ot? Én használgatom, de most lenne egy bonyolultabb felállás. Adott egy ilyen mappa struktúra:
css
| site - ebben vannak az oldal alap scss-ei, ezekből rendben generálok is egy compile-olt css-t
site.css
| themes - ebben a mappában vannak az alap megjelenésen felüli domainenként használt scss-ek
| theme1
theme1.scss
site.css - ez a site mappában lévő site.scss + az itt lévő theme1.scss-ből állna elő
| theme2
theme2.scss
site.css - ez a site mappában lévő site.scss + az itt lévő theme2.scss-ből állna előA lényeg, hogy ugyanaz a site több domainnel is elérhető lenne, és minden domain a saját témájával jelenne meg. Mindegyik oldal egy darab site.css-t használna, ebbe a site.css-be lenne beleforgatva a site mappában található lényeg, plusz az adott téma mappában lévő theme.css.
Ezt hogy lehetne gulppal szépen kivitelezni? Fapados módszert persze tudom, annyi taskot csináljak ahány témám van, és taskonként adjam meg, hogy mit honnan hova szedjen össze. Valami szebb, általánosabb megoldást keresnék, hogy ha felveszek X új témát, ne kelljen X gulp taskot is készíteni hozzájuk.
Én kérek elnézést!
-
Karma
félisten
-
Aureal
senior tag
Egy DIV elemről hogyan kérhetők le a CSS style paraméterei?
Classlist kombinálgatásával esetleg? -
fordfairlane
veterán
-
zuzu000
őstag
Sziasztok!
Egy Javascriptes metódust szeretnék implementálni C#-ba, és egy ilyen jött velem szembe:
var dist = valamilyen double szám.majd
if (!dist)
Ez annyit tesz, hogyha dist != 0?
-
Zedz
addikt
-
Sk8erPeter
nagyúr
"De ezt a mondatot neked írtam és nem neki"
Nem is nekem írtad.Szerintem mindketten értjük, mi a pálya, egyszerűbb, ha itt áll mindhárom változat, amiről beszéltünk, és akkor a kezdő is remélhetőleg megérti/megérzi a különbséget:
1:
var numbersArray = [1,2,3,4,5,6,7,8,9];
var evenNumbers = [];
for(var i = 0; i < numbersArray.length; i++) {
if(numbersArray[i] % 2 == 0) {
evenNumbers.push(numbersArray[i]);
}
}
console.log("Even numbers: ", evenNumbers);2:
var numbersArray = [1,2,3,4,5,6,7,8,9];
var evenNumbers = numbersArray.filter(function(num) {
return num % 2 === 0;
})
console.log("Even numbers: ", evenNumbers);3:
var numbersArray = [1,2,3,4,5,6,7,8,9];
var evenNumbers = numbersArray.filter(num => num % 2 === 0);
console.log("Even numbers: ", evenNumbers);(#5940) zuzu000:
"Egy Javascriptes metódust szeretnék implementálni C#-ba"
Ez a mondat így ebben a formában nem biztos, hogy értelmes...(#5937) Aureal:
Mi a cél vele amúgy?[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz PumpkinSeed #5929 üzenetére
Ez így elég csúnya, picit zsongott az agyam a kód olvasása közben.
Itt ráadásul a for...in ciklusnak nincs is haszna, sőt.
A getStartTime metódusnévből ráadásul nem érthető, hogy most igazából a szabad órák kezdőidejét szeretnéd lekérni.
Érdemes egyébként néha a sok-sok indexelés több helyen történő használata helyett inkább a ciklusmag elején eltárolni változóba az aktuális értéket, vagy akkor belül is for...in-t használni.
És ezenkívül szebb lenne, ha objektumként passzolnád át tömb helyett, hogy mondjuk egy startTime és nextTime lekérdezhető legyen így attribútumnév szerint (és nem kellene agyonindexelgetni a tömböket).Számomra ez jóval olvashatóbb, persze még ezen is lehetne szépíteni, most 5 percből ennyire futotta:
https://jsfiddle.net/d1jntk9a/1/Szerk.: ja, most nézem, a freehours-nál is asszem többszörösen egymásba ágyazott tömböt szerettél volna, ennek a további indexelése lemaradt, mindegy, a lényeg végül is érthető.
[ Szerkesztve ]
Sk8erPeter
-
PumpkinSeed
addikt
válasz Sk8erPeter #5943 üzenetére
Köszönöm, az biztos, hogy van mit javítani a JS tudásomon, és elég erősen rajta is vagyok, amikor időm engedi. A változónevek meg csak ideiglenesek, refaktoráltam is, csak az a jsFiddle-n nem látszódik.
"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
-
a2d2
addikt
Sziasztok!
Remélem jó helyen járok AJAX kérdéssel.
Az egész napom ráment ma egy program részletre, és csak nem sikerült működésre bírni.Gyorsan összefoglalom miről van szó:
Adott egy javascript amiben van egy AJAX blokk. Az AJAX blokk elindul de közben a JS fut tovább a főszálon, pedig használnia kellene az AJAX-nál visszakapott paraméter értékeket.
Ezt úgy próbáltam megoldani hogy létrehoztam egy ajaxvege = true változót a JS elején. Mielőtt elindulna az AJAX rész, ennek az értékét false-ra állítom, majd az AJAX végén visszállítom ezt az értéket true-ra. Az AJAX blokk után a főprogramban pedig meghívok egy ciklust, aminek az lenne a dolga hogy addig sleepeltesse a JS-t, amíg az ajaxvege = false.
Úgy gondoltam hogy ez így teljesen működőképes, de kiíratva az ajaxvege változó értékét, az folyamatosan false értéket mutat és végteleníti a ciklust (holott maga az AJAX rész csak kb egy mp-ig fut alap esetben).
Olyan mintha a JS nem venne tudomást arról hogy az AJAX közben módosítja a változó értékét.
Úgy is próbáltam hogy csak simán módosítottam a változó értékét miután meglett a többi paraméter értéke, úgy is próbáltam hogy a paraméterek mellett callback-el visszaadtam a hívó félnek az ajaxvege változót is, de nem működik egyszerűen.Van valakinek ötlete mi lehet a gond?
Köszönöm!
A pisztácia kifogyott, csokoládé nem is volt
-
Jim-Y
veterán
A javascript esemenyvezerelt aszinkron programnyelv a te esetedben az aszinkronitason van a hangsuly. Ha ezzel a fogalommal most talalakozol eloszor akkor keress ra a neten biztos jo leirasok vannak rola. Roviden tomoren az ajax hivas megszolitja a backendet, kuld egy requestet amire majd valamikor a jovoben jon egy valasz. Na most az talan erzodik, hogy a majd valamikor a jovoben az nem egy tul kezzel foghato valami, nagyon sok mindentol fugg, hogy mikor jon meg a valasz igy a lenyeg, hogy addig nem szabad feltartani a program futasat (nem szabad blokkolni). Ezt javascriptben (is) promiszokkal oldjak meg (promise). Ha ez a fogalom is ismeretlen szamodra akkor keress ra a neten -> (A+ promise). A jquery-nek (gondolom jquery-t hasznalsz ajax implementaciokent) is van egy sajat implementacioja a promisokra ezt hivjuk deferred-nek. Na a jQ ajax metodusai ilyen deferreddel ternek vissza
pszeudokod:
var yourVariable;
var dfd = jquery.ajax(options);
dfd.then(
function goodCase(returnVal) {
yourVariable = returnVal;
// do smtg with yourVariable here
},
function errorCase(err) {
if (err) {
console.error(err):
}
}
); -
a2d2
addikt
Szia!
Na ránéztem a tegnapi alkotásokra és ahogy nézem próbáltam már minden félével (.when, .then, async: false, ...), de nem tudtam sehogy megállítani a főprogramot. Ez egy OL3 program, benne egy google maps-es geokódolással. A JS második fele kellene hogy megkapja a kiszámított koordinátákat:
JS első fele
function getLatLng(callback) {
geocoder.geocode({'address': v_cim},function(results,status){
if(status == google.maps.GeocoderStatus.OK) {
v_koord_x = results[0].geometry.location.lat();
v_koord_y = results[0].geometry.location.lng();
ajaxvege = true;
callback(v_koord_x, v_koord_y, ajaxvege);
}
});
}getLatLng(function(v_koord_x, v_koord_y, ajaxvege) {
alert(v_koord_x);
alert(v_koord_y);
});JS második fele
A pisztácia kifogyott, csokoládé nem is volt
-
a2d2
addikt
Na sikerült végre. Eszembe jutott egy marha egyszerű ötlet és szerencsére működött.
Ennyi volt az egész:JS első fele
if koordinátákat kell számolni
{
function getLatLng(callback) {
geocoder.geocode({'address': v_cim},function(results,status){
if(status == google.maps.GeocoderStatus.OK) {
v_koord_x = results[0].geometry.location.lat();
v_koord_y = results[0].geometry.location.lng();
callback(v_koord_x, v_koord_y);
}
});
}
getLatLng(function(v_koord_x, v_koord_y) {
alert(v_koord_x);
alert(v_koord_y);
folytatas();
});
}
else
{
folytatas();
}function folytatas()
{
JS második fele
}A pisztácia kifogyott, csokoládé nem is volt
Új hozzászólás Aktív témák
- exHWSW - Értünk mindenhez IS
- Lakáshitel, lakásvásárlás
- Robogó, kismotor
- Apple iPhone 15 Pro Max - Attack on Titan
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Yettel topik
- Villanyszerelés
- Robot fűnyírók
- HiFi műszaki szemmel - sztereó hangrendszerek
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen