- iPhone topik
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Huawei Watch Fit 5 Pro - jó forma
- Xiaomi 14 - párátlanul jó lehetne
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Szaporodik és sokasodik a One UI 8.5
- Robottal a nyomában üldözi a Honor a Huawei-t
- Samsung Galaxy A54 - türelemjáték
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
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
-
dqdb
nagyúr
[link]
Az eredeti kódod is tökéletesen működik. A teljes kódot bedobtad ide, vagy csak a lényeget az eredetiből? Mert ha az utóbbi, akkor a példa kedvéért törölt részekben lesz a hiba. -
dqdb
nagyúr
Sziasztok!
Bongeszoben szeretnem futtatni az alabbi kodot, de valami oknal fogva csak a dereferer.link atiranyitas eltavolitas mukodik, a .me vegu nem. Szerintetek mi lehet a problema?...(function () {'use strict';const REPLACEMENTS = {'dereferer.link': {pattern: /^https?:\/\/(?:www\.)?dereferer\.link\/\?(.+:\/\/.+)/,noreferrer: true,},'dereferer.me': {pattern: /^https?:\/\/(?:www\.)?dereferer\.me\/\?(.+:\/\/.+)/,noreferrer: true,},};for (const el of document.querySelectorAll('a')) {for (const [name, repl] of Object.entries(REPLACEMENTS)) {const match = repl.pattern.exec(el.href);if (match) {const origUrl = match[1];console.debug(`Dereferer Remover (${name}): replacing ${el.href} -> ${origUrl}`);el.href = origUrl;if (repl.noreferrer) {el.rel = 'noreferrer';}}}}}());Biztosan
https://www.dereferer.me/?https://example.com/formátumú az URL és nincsen escape-elvehttps://www.dereferer.me/?https%3A%2F%2Fexample.com%2Fformában a .me végű címek esetében?A két regexet össze lehet vonni egybe:
^https?:\/\/(?:www\.)?dereferer\.(?:me|link)\/\?(.+:\/\/.+) -
dqdb
nagyúr
"The Date.now() static method returns the number of milliseconds elapsed since the epoch, which is defined as the midnight at the beginning of January 1, 1970, UTC."
Szóval igen, jó.
-
dqdb
nagyúr
<script>function dio(){eval("var w")}; //: func_function alma(){alert(w)}; //: func_dio() ; alma() ;</script>Hogyan tehetném meg, hogy a dio() w -je az alma() -ból aktiválható legyen ? - vagyis hogy lokál helyet globális legyen .

function dio(){
w = 42
}; //: func_
function alma(){
alert(w)
}; //: func_
dio() ; alma() ;Ha nem kerül a deklarációnál a neve elé
varvagylet, akkor globális lesz a változó. Egyúttal erre építeni egy nagyon rossz gyakorlat, mert a globális névteret úgy szemeteled tele, hogy ennek nem lesz nyoma a legfelső szinten. Szóval tessék csak rendesen globális változót gyártani, ha nem tudod megkerülni, hogy szükség legyen globális változóra. -
dqdb
nagyúr
Oh, jaj ♥
Van ez az alakom :var a1, a2,a3, b1, b2, b3 ;a1, a2, a3 = [b1, b2, b3] ;Ez nyilván nem működik, de lehet e valami ilyesmi alak, ami működne ?
Azt szeretném, hogy legyen :
a1= b1 ; a2= b2 ; a3= b3 ; -
dqdb
nagyúr
Sziasztok!
Tovább görgetem a botcsinálta programozói pályafutásomat.
JS-ben kell számoltatnom.
RKorrigalt és Delta értékeket megkapom, számolnám Lg Rm-et, majd abból Rm-et.A lenti kód viszont természetes logaritmust vesz, ellenben nekem 10-es alapu kellene. Van olyan beépített fv JS-ben, ami 10-es alapu lg-t számol és nem ln-t?
LRm = (-2.159 + Delta + 1.805 * Math.log(Rkorrigalt) + 0.345 * Math.log(Rkorrigalt) * Math.log(Rkorrigalt));
Rm = Math.pow(10;LRm);Köszi szépen -
dqdb
nagyúr
Sziasztok!
Nem, nem kérdezek semmit
csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.
Történt ugyanis, hogy egy adott beviteli mezőnek használni akartam az értékét JS-ből.<input type="number" id="szam" value="13">
Az ehhez tartozó lekérdezés a legsztenderdebb valaha:let szam = document.getElementById("szam").value;
Namost sokat csináltam régebben is ilyet, de mint kiderült, egyetlen dolgot nem akartam vele: Összeadási műveletet végrehajtani.Ugyanis nem éppen együttműködő
![;]](//cdn.rios.hu/dl/s/v1.gif)
Kivonni, szorozni, osztani, gyököt vonni, stb simán lehet probléma nélkül. De amint hozzáadnál valamit:szam = szam + 600; // result: 13600. Szóval string lesz belőle, noha egy számbeviteli változóról van szó... Miután ezt felfedeztem, elkezdtem kísérletezni vele. Számértékké konvertálásra azonnal hibát dobott a console. String-é alakítani és utána vissza num-ra lehet és utána minden működik, még az összeadás is... Csak lássuk be, nem a legszebb megoldás
Így maradt a jó öreg mottó: Ha valamit nem tudsz megoldani, kerüld meg! Így lett végül a megoldásszam = (szam / 1) + 600 // result: 613. Szebb is, működik is, de egyébként felesleges lenne, ha néha nem kattanna meg a böngészők motorja![;]](//cdn.rios.hu/dl/s/v1.gif)
Chrome alatt tesztelve
behavior by design
Az input.value property string típusú attól függetlenül, hogy milyen típust állítasz be az elemnek. JavaScriptben string + szám = string, azért kapod azt, amit, míg a többi esetben a stringet számmá konvertálja.
-
dqdb
nagyúr
Egy XHR/fetch kérésben a szervernek felküldöd a kliens UTC időt, az válaszban visszaküldi a saját UTC idejét, te pedig a kliensen a két érték különbségét ofszetként figyelembe veszed minden dátummal kapcsolatos megjelenítésben (szerveroldali logikában persze kizárólag a szerver idejét használod).
-
dqdb
nagyúr
Sziasztok!
Választ keresek egy anomáliára. Itt van ez az oldal. Kimondottan jópofa és hasznos megoldások vannak rajta. Amik működnek JSFiddle-ben, CodePen-en, stb. De abban a pillanatban, hogy felteszem a saját szerveremre egy HTML fájlba (példa), az összesnek a JS-e hibára fut. Megjelenik a hiba a Console.log alatt is, de nem látom a miértjét, ha egyszer mindenhol máshol (tesztoldalak) működnek.
Mi lehet ennek az oka?
A scriptben olyan divre hivatkozol, ami akkor még nem létezik. Tedd a forrás végére a scriptet.
-
dqdb
nagyúr
-
dqdb
nagyúr
Szükségem lenne egy függvényre, ami egészen addig nem engedi tovább futni a szkript többi részét, amíg a szükséges változó értéket nem kap (mert utána azzal az értékkel dolgoznék tovább).
(Nem lehet összedrótozni/egybeágyazni őket sehogy, hogy csak akkor fusson a szkript maradék része, ha az érték visszajött az adatbázisból. Sajnos ez nem megoldható.)Ilyesmit kezdtem el összerakni, de nem úgy működik, ahogy szeretném:
function waitForResult(resultToWaitFor, acceptValue){console.log("In waitForResult. resultToWaitFor = " + resultToWaitFor);if (typeof resultToWaitFor !== 'undefined'){setTimeout(function(){waitForResult();console.log("Waiting for result.")if (resultToWaitFor >= acceptValue){return 0;}}, 100);} else {console.log("Megvan az eredmény.");return 0;}}***** Az elképzelés lényege az lenne, hogy 100ms-onként ellenőrzi, hogy kapott-e már értéket a vizsgált változó. Ha nem, ellenőrzi újra (rekurzívan). Ha kapott, kilép, és engedi futni az utána következő részeket. Nem ad vissza értéket. Semmit nem csinál, csak "feltartja" a szkriptet addig, amíg a változó értéket nem kap. (És mindig kap. Jellemzően pár tized mp-en belül, viszont van, hogyha "túlbuzgó" a user, eljuthat ahhoz a részhez a kódhoz, ahol használni kell ezt az értéket, mielőtt még materializálódna a változó. Ezt szeretném orvosolni.)
Ha a jelen formájában használom, hiába érkezik meg az érték, folyamatosan pörög tovább (logban látszódik, hogy Waiting for result-ot dobálja eszement módon utána is).
Pont ennek utánajárva találtam, hogy az első if-ágban is kell egy return - a belső ellenőrzést (és vele az acceptValue-t) ezért hoztam be. De nem segített.
A return 0 azért lett, mert a sima return-nal nem (sem működött), próbáltam hát így is.
----------
Vagy csináljak egy setTimeout-os, while-os ellenőrzést, a végén emelgetve egy számlálót, és megadok egy értéket neki, amit soha nem érhet el? Max ez a backup plan, de jó lenne a későbbiekben is egy ilyen "waitForResult" függvény, jó lenne azt rendbe rakni.Irányt tudnátok mutatni a témában, kérlek?
Alapvetően hibás, amit csinálni szeretnél. Persze mindenki valami hasonlót szeretne elérni, amikor először kell aszinkron hívást beépíteni az addig szinkron homokozójába, de ettől még nem így kell

1. az adatbázis-lekérdezés előtt letiltasz minden beviteli mezőt
2. a lekérdezés befejezésekor lefutó callbackben engedélyezed a mezőket
A módszer hátránya, hogy a letiltás látható változást hoz, ami gyors lefutás esetében zavaró villogást eredményezhet.1. az adatbázis-lekérdezés előtt az előtérbe hozol egy teljes oldalt lefedő 100%-os átlátszóságú
DIV-et, ami az egéreseményeket blokkolja az oldalon található elemek elől, a billentyűzetről neked kell gondoskodnod a fókusz valahová áthelyezésével
2. a lekérdezés befejezésekor lefutó callbackben a háttérbe küldöd aDIV-et
A módszer hátránya, hogy lassú lefutás esetében a felhasználó azt érzékeli, hogy "lefagyott" az oldal, mert akárhová klikkel, nem reagál1. az adatbázis-lekérdezés előtt ugyanazt csinálod, mint az előző megoldásban és
setTimeoutsegítségével ~300 ms késleltetéssel (a pontos értéket neked kell kikísérletezni, hogy a felhasználónak ne villogjon feleslegesen a képernyő, de ne érezze azt sem, hogy "lefagyott" az oldal)
2. ha asetTimeoutcallback fut le először, akkor előtérbe hozol egy másik teljes képernyősDIV-et, ami részlegesen átlátszó és rajta szöveggel, hogy várjon a user
2. a lekérdezés befejezésekor lefutó callbackben tolsz egycancelTimeout-ot, és a háttérbe küldöd mindkétDIV-et -
dqdb
nagyúr
Bénázok...
Szeretnék egy tömböt, amibe feltöltöm (mondjuk) a userek vezetéknevét, keresztnevét, korát.
Így gondoltam megcsinálni:
var userData = new Array();for (var i = 0; i < numberOfUsers; i++){userData[i] = new Array();userData[i]["vezetknev"] = lekerdezesEredmenye[i].vezeteknev;userData[i]["keresztnev"] = lekerdezesEredmenye[i].keresztnev;userData[i]["kor"] = lekerdezesEredmenye[i].kor;//stb.}Lekérdezni meg úgy szeretném, hogy userData[0]["kor"], akkor visszaadja, hogy pl. 28.
Működik, de azt kérdezném, hogy van-e ennek jobb módja.
Mert valamiért olyan "furán néz ki"... (aztán persze ez legyen a legnagyobb gond.)Köszi.
var userData = lekerdezesEredmenye;Így egyszerűbb a kód.
[link] -
dqdb
nagyúr
Egyes oldalak a kérésekben a böngésző által küldött
Accept-Languagealapján megpróbálnak okosak lenni. Annyit tudsz tenni, hogy a böngésző beállításainál az angolt állítod át preferált nyelvre, ha főleg angol tartalmakat keresel (persze ilyenkor meg a magyar nyelvű tartalmat próbálják meg az ilyen oldalak angolra fordítani ...).Ez a header arra lenne jó, hogy egy többnyelvű oldal igazodjon a látogató által preferált nyelvhez, de nem arra, hogy mindezt semmire sem jó gépi fordítással érjék el.
-
dqdb
nagyúr
-
dqdb
nagyúr
Belefutottam egy olyan hibába ezzel a kóddal, hogy amikor több szót is szeretnék kijelölni, és az egyik ezek közül a
markrésze (pl.ma, vagy simán csak azabetű), akkor a<mark></mark>-ban lévő karaktereket is átírja, ezzel elrontva az egészet.A gond itt nyilván az, hogy már ugyanarra a sztringre hívom rá újra a kijelölő függvényt, amiben már benne vannak a mark tag-ek.
Ki lehet valahogy kerülni, hogy a kijelölő mark tag-eket is átírja? Mármint valami egyszerű módon.
Köszi.
Azonban ahogyan a korábbi kódomnál jeleztem, nem túl szerencsés escape-elés nélkül betolni egy stringet reguláris kifejezésnek, mert speciális karakternél szépen jön az exception.
-
dqdb
nagyúr
Ajánlott előtte a
textToMarktartalmának escape-elése, ha véletlenül regex számára speciális karaktert tartalmazna.var textToMark = "a*b*c";
var textContainer = "xxxx A*B*C yyyy a*b*c zzzz";
var escapeRegex = new RegExp(/[.*+?^${}()|[\]\\]/g, "g");
console.log(textToMark);
var textToMark = "(" + textToMark.replaceAll(escapeRegex, "\\$&") + ")";
console.log(textToMark);
var replaceRegex = new RegExp(textToMark, "gi");
console.log(textContainer);
textContainer = textContainer.replaceAll(replaceRegex, "<mark>$1</mark>")
console.log(textContainer); -
dqdb
nagyúr
-
dqdb
nagyúr
-
dqdb
nagyúr
Üdv!
Random számokat szeretnék kiíratni X darabot, de azt szeretném, hogy az X darabon belül ne legyen kétszer ugyan az a szám kiírva. Mondjuk ha az 5 egyszer már volt, akkor az ne legyen mégegyszer abban a körben. Ha mondjuk a random csak 0-9 ig terjedő számok közül választhat, de X 15-el egyenlő, azaz 15 darab kellene, akkor is csak 10 szám legyen random sorban (a nullával együtt ugye), azaz a fontosabb prioritás az legyen, hogy ne ismétlődjön egy körben a random szám, mintsem az X értéke.Ha az
[A, B]intervallumot szeretnéd véletlen sorrendben felsorolni (mert amit leírtál, az nem véletlenszám-generálás, hanem véletlensorrend-generálás), akkor készíts egy tömböt[A, A+1, A+2, …, B-1, B]elemekkel, egyA-tólB-ig vagyA-tól(A+B+1)/2-ig menő ciklussal cserélj ki két elemet, ahol a két sorrendet véletlenszám-generátorral határozod meg. A generálás pedig mehet a tömbbőlshift()metódussal, amíg van benne valami.Másik lehetőség, hogy gyűjtöd egy listába az eddig kisorsolt számokat. Ha a lista hossza megegyezik a
B-A+1értékkel, akkor nem tudsz visszaadni semmit sem, mert elfogytak a lehetőségek. Ha rövidebb a lista, akkor addig generálsz véletlen számot, amíg az nem lesz benne a listában. A visszaadott számot hozzáfűzöd a listához. A módszer hátránya a másikkal szemben, hogy induláskor igaz, hogyO(1)időt igényelO(n)helyett, de a generálás már legjobb esetben isO(n×log n)leszO(1)helyett. -
dqdb
nagyúr
-
dqdb
nagyúr
const extra = parseInt(document.querySelector("input[name='extra']:checked").value); -
dqdb
nagyúr
var height = 200;
var height250 = 200+250;
var x = `'${height250}px'`;
var x = '450px';
document.getElementById('demo').style.paddingTop = x;Ha az alsó var x-et használom, beállítja demo element paddingtop-ját 450px-re , ha kikommentelem az alsó var x = ''450px'-et, akkor nem. Pedig a felső var x értéke ugyan az kell, hogy legyen.
Vagy
`, vagy', de nem egyszerre a kettő. -
dqdb
nagyúr
Sziasztok,
Egy kis segítségre lenne szükségem.
Írtam egy funciont egy html oldalhoz:function calcAmount() {const hamburgerPrice = 1200;const extra = parseInt(document.querySelector("input[name='extra']:checked"));const souce = parseInt(document.querySelector("select[name='souce']"));const quantity = parseInt(document.querySelector("input[name='quantity']"));document.querySelector("span[id='amount']").innerHtml = (hamburgerPrice + extra.value + souce.value) * quantity;}Eredményként mindig NaN-t kapok.
Mi lehet a gond?function calcAmount() {
const hamburgerPrice = 1200;
const extra = parseInt(document.querySelector("input[name='extra']:checked").value);
const souce = parseInt(document.querySelector("select[name='souce']").value);
const quantity = parseInt(document.querySelector("input[name='quantity']").value);
document.querySelector("span[id='amount']").innerHtml = (hamburgerPrice + extra + souce) * quantity;
}Feltéve, ha jók a selectorok. Ilyenkor a legszerencsésebb megoldás legalább
console.loghívásokkal naplózni minden értéket, ha debugolni nem akarsz. -
dqdb
nagyúr
Üdv!
Van egy modal.js-em. Nem akar stoppolódni!...
function startCallback() {
var startCB = window.setInterval(myCallback, 500, -1);
}
function stopCallback() {
console.log('TRY TO STOP');
window.clearInterval(startCB);
console.log('STOPPED');
}
function myCallback(a)
{
plusSlides(a);
}
...Start onclickre el kezdi cserélni a képeket a slider, de stopra ezt a hibát kapom:
modal.js:44 Uncaught ReferenceError: startCB is not defined
at stopCallback (modal.js:44)
at HTMLAnchorElement.onclickA
startCB-t lokális változóként definiálod. -
dqdb
nagyúr
Inkább egy lokális változóba gyűjtse az értéket, aztán a végén frissítse az eredménnyel az
innerHTML-t, mert nem szerencsés újrarendereltetni az oldalt minden részlépés után. -
dqdb
nagyúr
Szia
Az a bajom ezzel, hogy nem tudom.textContent-el őket szöveges formába hozni az Objektumokat. Egy ilyet kapok vissza.
Amikor ezt be írom:Array.from(document.querySelectorAll(".adminbox_table_content_col_1")).textContent[td.adminbox_table_content_col_1, td.adminbox_table_content_col_1, td.adminbox_table_content_col_1, td.adminbox_table_content_col_1, td.adminbox_table_content_col_1, td.adminbox_table_content_col_1]Array.from(
document.querySelectorAll(".adminbox_table_content_col_1"),
x => x.textContent) -
dqdb
nagyúr
A cert (kotorászás helyi szerveren), a session id (szintén kotorászás, temp file írás), az új process / thread (cpu költség az is +4 mega vagy több memória per processz) - ezek ott vannak mindegyik logikai framewrok aljában, és ha nem pár 10-el szorzod be, hanem pár 1000-el, élve felfalják a szervert.
A http/2 mire lenne jó nekem jelen esetben?
Egyenlőre úgy tűnik, xmlhttprequest és c# httplistener lesz belőle. Gyártok tesztet, amint beletörődtem a kudarcba, és majd meglátom az eredményeket. Ha kukás, eleresztem.
A titkosítás teljesítményre gyakorolt hatását ketté kell bontani kapcsolatfelépítésre és a már felépített kapcsolaton keresztüli kommunikációra.
Egy TLS kapcsolatnál a felépítés költsége az igazán jelentős, ez hálózati oldalon egy extra RTT körből jön össze a protokoll miatt (a TLS1.3 és a neked ajánlott HTTP/2 rendelkezik zero-RTT opcióval, szóval ez eliminálható), CPU oldalon egy privát kulcsos műveletből, ami a kriptográfiai műveletek között messze a legdrágább.
Először lefuttattam egy Core i5-4590-en a kéznél levő őskövület, 2012-es OpenSSL 1.0.1c egy szálon futó sebességtesztjét:
sign verify sign/s verify/s
rsa 2048 bits 0.004417s 0.000136s 226.4 7361.3
rsa 4096 bits 0.032730s 0.000511s 30.6 1955.3Aztán beugrott, hogy azóta bekerülhetett AES-NI támogatás az OpenSSL-be és a CNG-be is (saját céges teszt volt RSA aláírás témakörben, azon az OpenSSL-t használó C kód és a CNG-t használó C# kód ugyanazt a teljesítményszintet nyújtotta), ezért fordítottam OpenSSL 1.1.1c-t, és lemértem azzal is:
sign verify sign/s verify/s
rsa 2048 bits 0.000616s 0.000029s 1623.4 33982.7
rsa 3072 bits 0.002859s 0.000060s 349.8 16806.2
rsa 4096 bits 0.006546s 0.000104s 152.8 9661.8Az előrelépés látványos, és a fenti processzor egyetlen szálon 1623 aláírást tud végrehajtani másodpercenként a most elterjedt 2048 bites kulccsal. Mivel ennek a kulcsméretnek várhatóan már csak pár éve van, hogy átcsússzon nem ajánlottba (bár addig még rengeteg, hogy határozottan kerülendő legyen), bekerült a 3072 és 4096 bites kulcsméret is, azokat is érdemes nézegetni, hogy mire lehet majd 8-10 éven belül számítani. Az ECC opciókat kihagytam, azok CPU erőforrásban a 2048 és 3072 bites RSA között vannak valahol korábbi céges tesztjeink alapján.
Ha már felépült a kapcsolat, akkor azon titkosítva mennek át az adatok, ez ma tipikusan AES128/AES256. Lássuk a teszteket (csak frissebb OpenSSL, itt 10% javulás volt csak a korábbihoz képest):
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128 cbc 138254.38k 146752.33k 153316.83k 148921.83k 151887.48k 151125.24k
aes-192 cbc 107198.00k 121410.13k 124547.81k 122201.29k 128566.72k 129934.99k
aes-256 cbc 97304.25k 107784.19k 107225.75k 105430.48k 106100.13k 104593.96kAzaz a ma elterjedt AES128-cal egyetlen szál 138 MB/s sebességre képes a gépemen, ebbe az általad megadott 15 MB/s sebességigény röhögve belefér, egyetlen átlagosan erősnek nevezhető CPU egyetlen szála 11%-os terheléssel kiszolgálja a létrejött TLS csatornán a titkosítást, ezt én elhanyagolható erőforrástöbbletnek nevezném. Az AES128 várhatóan még sokáig velünk lesz ajánlott formában, itt erőforrás szempontjából a jövőre nézve a legrosszabb eset az AES256-ra áttérés jelenti.
A fentiekből látható, hogy nem kell hatalmas szerverfarm ahhoz, hogy kiszolgálj 10000 kapcsolódást, elég egy szerver megfelelően sok maggal, de az is látható, hogy a HTTP Keep-Alive funkcióra egyszerűen kötelező építeni, mert ezzel a kapcsolatfelépítést tudod megspórolni, minden kéréshez külön TLS csatornát építeni drága hobbi és ahhoz tényleg kell az erőforrás (azonban mivel böngésző a túloldal, ezért ahhoz komolyan meg kell dolgozni, hogy kiiktasd azon az oldalon a keep alive-ot).
10000 tps-hez a szervert megfelelően össze kell rakni. Felejtsd el az async idők előttről itt ragadt HttpListener-t, az ASP.NET Core-ra építs IIS vagy Kestrel alapokon (és azonnal kapsz HTTP/2 támogatást), ahogyan martonx ajánlotta, vagy ha pehelysúlyra vágysz HTTP/2 nélkül, akkor ott a uHttpSharp. A kérések kiszolgálását kizárólag async kód végezze kihasználva az aszinkron futás lehetőségét az összes IO műveletnél, mert ilyen terhelés töredékénél is luxusnak számít az 1 worker thread/kérés működés (az általad írt 1 process/kérés pedig teljes mértékben az).
További olvasnivaló a témában itt.
-
dqdb
nagyúr
Sziasztok!
Az alábbi kódban kérnék segítséget. Lefut, de minden zöld, dátumtól függetlenül:
function colorCodeRows() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function (ctx) {
// get today's date
var today = new Date();
// zero out the time portion so we will only compare days
today.setHours(0,0,0,0);
var rows = ctx.ListData.Row;
for (var i = 0; i < rows.length; i++) {
// get the date set in your date YourDateField
var itemDate = new Date(rows[i]["Határidő"]);
// zero out the time portion so we only compare days
itemDate.setHours(0,0,0,0);
var rowId = GenerateIIDForListItem(ctx, rows[i]);
var row = document.getElementById(rowId);
if (itemDate > today) {
row.style.backgroundColor = '#00FF00';
} else if (itemDate = today) {
row.style.backgroundColor = '#FFFF00';
} else if (itemDate < today) {
row.style.backgroundColor = '#FF0000';
}
}
}
});
}
RegisterModuleInit(SPClientTemplates.Utility.ReplaceUrlTokens('~site/SiteAssets/JSLink/coloring.js'), colorCodeRows);
colorCodeRows();Nem tudom mit nézek be, mert elvileg teljesül a többi feltétel, de a notepad nem tud lépésenkénti futtatást.
itemDate = todayez biztosan rossz, mert így értékadás is
-
dqdb
nagyúr
Sziasztok, MongoDB-vel szeretnék olyat csinálni, hogy a usertől békérek egy usernevet illetve egy profilnevet, ha profilnevet nem ad meg, akkor a default '[username]'s profile' legyen.
A gondom az, hogy a bevitt usernevet nem tudom sehogy sem elérni a default résznél. Mi lenne a helyes módja ennek? Köszönöm
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const User = new Schema({
_id: mongoose.Schema.Types.ObjectId,
username: {
type: String,
required: true,
unique: true,
},
profilename: {
type: String,
default: ??? ,
},
});
module.exports = mongoose.model('User', User);Init hook segítségével tudod ezt megoldani:
User.post('init', user => {
if (!user.profilename) {
user.profilename = user.username + "'s profile";
}
}); -
dqdb
nagyúr
-
dqdb
nagyúr
Amúgy azért gyakorlom iframen, mert tömegesen szeretnék eltüntetni dolgokat egy másik oldalról és azt beépíteni a saját oldalamba.
Ennek azért erőteljes jogi vonzata is van. -
dqdb
nagyúr
-
dqdb
nagyúr
Erre gondoltam. Ez nem jQuery?
const btn = document.querySelector('.btn__change-bgColor');
const target = document.querySelector('.target-wrapper');A kattintósnál meg azt értem, hogy van egy gomb és ha rákattintok elsőre, akkor legyen mondjuk piros, ha rákattintok másodjára legyen mondjuk nagyobb és így tovább.
Nem.
-
dqdb
nagyúr
Még egy olyan kérdésem lenne, hogy ezt a 2 scriptet hogy tudom egymásba "fűzni"?
Tehát, hogy ne 2 külön kódot kelljen lefuttatni, hanem csak egyet, ami mindkét utasítást tartalmazza.javascript:(function a(){document.getElementById("termsAccept").checked=true;})()
javascript:(function b(){document.getElementById("summaryForm").submit();})()javascript:(function a(){document.getElementById("termsAccept").checked=true;document.getElementById("summaryForm").submit();})() -
dqdb
nagyúr
Igen, meglehetősen egyszerű volt megtalálni:
1. megnyitottam az oldalt, majd utána a Developer Tools-t a Ctrl+Shift+I megnyomásával, ott Network fül
2. gépeltem a mezőbe, és láthatóan nem volt hálózati forgalom, így egyértelművé vált, hogy a teljes lista lejön, nem a szervert használja a találatok szűkítéséhez
3. mivel az ilyen típusú adatokat általában külön fájlban szokták letölteni, ezért első tippre bekapcsoltam az XHR-re szűrést, és újratöltöttem az oldalt
4. megjelent a listában a productselector/ sor, így itt véget ért a keresgélés, nem kellett a sokkalta hosszabb JS listát végigbogarászni -
dqdb
nagyúr
Ezen az oldalon lennék kíváncsi, hogy ha beírom a keresőbe, hogy: MG, az milyen listából olvassa be az aktuális terméktípusokat? (A lista tartalmát szeretném megkapni vagy vágólapra helyezni csak nem tudom hol lehetne rátalálni akár a böngi betöltött fájljai közt is...)
Csak négy oldalt töltött le XHR segítségével, ráadásul beszédes URL-t használva, így szerencsére kódot sem kellett ahhoz nézni, hogy meglegyen.
-
dqdb
nagyúr
Azt szeretném elérni, hogy ha bárhol kiadom a kódban a
getPage('http://urlcím');-et, akkor a DATA globális változóban ott legyen az adott oldal forráskódja.Pl xhr, ami régen használtam, viszont gondolom node js-nél a CORS miatt nem megy:
var DATA = '';
function getPage(url){
http = new XMLHttpRequest();
http.open("GET",url, false);
http.send();
DATA = http.responseText;
}Széllel szemben nehéz lesz
![;]](//cdn.rios.hu/dl/s/v1.gif)
Az egész Node.js éppen az aszinkron működésre épít, így minden esetben, amikor nem aktívan dolgozol, hanem valami erőforrásra vagy eseményre vársz, legyen az hálózatról adat lekérése, fájl írása* vagy adatbázis-művelet, mindig egy callbackben kapod meg a végeredményt. Ennek az az oka, hogy a szinkron várakozás blokkol egy feldolgozószálat, és csökken a szerver feldolgozási képessége, míg aszinkron esetben az adott szál lazsálás helyett értelmes munkára is befogható, vagyis egy másik kérés feldolgozására. Most mondhatod, hogy de te ezt nem kérted, azonban azzal, hogy a Node.js alapon álltál neki, pont egy aszinkron, threadpool alapú hatékonyan skálázódó platformra esett a választásod, így vagy megszoksz, vagy megszöksz ...
Kókányolni
szerencséresajnos minden platformon lehet, így itt is, és valószínűleg ezt keresed (nem használtam soha, keresés dobta ki). De itt sem nem véletlenül kezdődik a leírás a Githubon elérhető legnagyobb betűméretű bekezdéssel, hogy miért ne használd ezt a libraryt.viszont gondolom node js-nél a CORS miatt nem megy
A CORS böngésző szintjén értelmezhető csak. A Node.js azért nem támogatja az XHR-t, mert saját API-ja van, nem a böngésző DOM modelljét másolja.* ebből kivételesen létezik szinkron API is, de ennek ellenére a aszinkron felület felé terelnek a hivatalos dokumentációban:
"In busy processes, the programmer is strongly encouraged to use the asynchronous versions of these calls."
-
dqdb
nagyúr
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...
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.
-
dqdb
nagyúr
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]);
}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]);
} -
dqdb
nagyúr
HTML-ben és DOM-ban csak zavaró lehet (ugyanis engedi a szabvány), de CSS szintjén nem kezdődhet számmal egy class neve:
In CSS1, a class name could start with a digit (".55ft"), unless it was a dimension (".55in"). In CSS2, such classes are parsed as unknown dimensions (to allow for future additions of new units). To make ".55ft" a valid class, CSS2 requires the first digit to be escaped (".\35 5ft")
De például ékezetes karakterrel igen, így néz ki a nyelvtan és a lexer releváns része:
class
: '.' IDENT
;ident -?{nmstart}{nmchar}*
nmstart [_a-z]|{nonascii}|{escape}
nonascii [\240-\377]
escape {unicode}|\\[^\r\n\f0-9a-f]
unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?Ha itt a számot csak sorszámként használnád fel, és nem tartozna hozzá konkrét CSS szabály, akkor ennek a tárolására egy data-xxx attribútum szerencsésebb megoldás lenne (és erre még CSS szabályt/szelektort is lehetne írni).
-
dqdb
nagyúr
-
dqdb
nagyúr
jQuery('.item.col-md-4.0').hide();
Kísérletezéskor kapcsold be Ctrl+Shift+J-vel a JS konzolt a böngészőben, hogy lásd a hibaüzeneteket. Így azonnal kibukott volna, hogy nem állítottad be JSFiddle-ben, hogy jQuery-t használnál. Ezt a JavaScript panel jobb felső sarkában a fogaskerékre kattintva tudod megtenni.
-
dqdb
nagyúr
Pure JS-el mennyire nevezhető ez a megoldás kulturáltnak, ha az összes li elem színét akarom változtatni?
var listElements = document.querySelectorAll("li");
for(var i = 0; i < listElements.length; i++){
listElements[i].style.color = "rgb(" + currRed +
", " + currGreen + ", " +currBlue + ")";
}Van ennél ortodoxabb, szebb megoldás?
Ha ugyanazt a számolt adatot többször is felhasználod, akkor számold ki előre, tedd el egy változóba és onnan vedd ki az értékét. Én a JS-specifikus részekre nem térnék ki, azt majd megteszik mások.
-
dqdb
nagyúr
Átfogalmazom:
Egy jól megírt kódban nincs olyan, hogy egyszer működik, egyszer nem.
console.log("yolo");
Minden egyes esetben ki fogja írni, hogy yolo. Nincs olyan, hogy 10x kiírja, egyszer nem.

Nyilván fejlesztés közben vannak bugok, meg furcsaságok.
Az átfogalmazásodból is hiányzik az azonos kiindulási és működési körülmények szöveg.
-
dqdb
nagyúr
Uraim, kérnék egy kis segítséget.
Van egy cookie amibe tárolok szöveget.
Az első sortörésig működik is rendesen, de ha egy enter sortörés kerül a szövegbe, akkor onnantól semmi nem tárolódik már. (ameddig nincs sortörés addig persze meg van a szöveg)
Meg lehet ezt oldani, hogy a sortöréseket illetve az azutáni szöveget is eltárolja az adott cookie? -
dqdb
nagyúr
üdv!
Adott egy feladat, amelyben generálni kell 12 véletlen számot majd megkeresni közülük a 3-mal oszthatókat, végül kiíratni. Működik is, csak a képen látható dolog zavar, a vesszők ott maradnak... ki lehetne azokat szedni onnan valahogy?
A kód (ne kössetek bele, első ilyen js feladatom, és örülök, hogy működik

<script>
function genrand()
{
var tomb=new Array(12);
var eredmeny=new Array(12);
var i, j;
for(i=0;i<12;i++)
{
tomb[i]=Math.ceil(Math.random()*11)
}
for(i=0;i<12;i++)
{
document.getElementById("tomb").innerHTML = tomb;
}
j=0;
for(i=0;i<12;i++)
if(tomb[i]%3==0)
{
eredmeny[j]=tomb[i];
j++;
}
document.getElementById("three").innerHTML = eredmeny;
}
</script>var eredmeny=[];
Előre azt mondtad, hogy az eredmény 12 elemű tömb lesz, de nem írtál bele annyi elemet, így a maradék undefined értéket vett fel. A new Array() helyett inkább a sokkal tömörebb [] szintaktikát használd.
for(i=0;i<12;i++)
{
document.getElementById("tomb").innerHTML = tomb;
}Itt a for ciklusnak semmi értelme sincsen.
Szűrésre és egyéb tömbbel kapcsolatos műveletekre érdemes használni a JS filter/reduce/map feature-jeit, ha lehetőséged van rá, mert sokkal tömörebb és átláthatóbb kódot eredményez:
var eredmeny = tomb.filter(function(e) {
return e % 3 === 0;
});Csak akkor használd a == és != operátorokat, ha szükséges a konverzió, minden egyéb esetben a === és !== operátorokat használd.
Legyél konzekvens a központozásban, tedd ki mindig a space-eket az operátorok elé és mögé, valamint a sorok elejére a megfelelő behúzást.
for(n=0;n<12;n++)
if(tomb[n]%3==0)
{
eredmeny[j]=tomb[n];
j++;
}
document.getElementById("three").innerHTML = eredmeny;
}És kerüld az ilyen eseteket, mert első ránézésre azt hinné az ember, hogy az innerHTML módosítása is a for cikluson belül történik, ezért tedd ki a kapcsos zárójeleket:
for (n=0; n < 12; n++)
{
if (tomb[n] % 3 === 0)
{
eredmeny[j] = tomb[n];
j++;
}
}
document.getElementById("three").innerHTML = eredmeny;Vagy a JavaScript szokások szerint írva:
for (n=0; n < 12; n++) {
if (tomb[n] % 3 === 0) {
eredmeny[j] = tomb[n];
j++;
}
}
document.getElementById("three").innerHTML = eredmeny; -
dqdb
nagyúr
Szép találat, türelmes voltál.
Végül is ez esetben meg lehetne tenni, hogy a fájtl letölti, átírja ennek megfelelően, és az adott kérésre ezt az új tartalmat szolgálja ki saját extensionnel, DE ennek igen komoly hátránya, hogy "bedrótozza" a korábbi kódot, és a fájl frissülése nála nem lesz érvényes.
Azt nézem, hogy van egy ilyen rész a kódban:setTimeout(function() {
$('iframe').each(function() {
var src = $(this).attr('src');
if(src.match(/youtube\.com/i) || src.match(/video\.mno\.hu/i)) {
reloadBlocker = true;
}
});
if(!reloadBlocker) {
document.location.assign(document.location.href);
}
}, reloadTime);(fúj)
Ezek szerint ha saját extensionből csak beágyaz egy elrejtett YouTube-os iframe-et (lényeg, hogy az src attribútum a youtube-ra mutasson, nyilván az egész oldalt nem érdemes beágyazni
), akkor a reloadBlocker változó értéke true lesz, és a document.location.assign(document.location.href); sor nem fog lefutni.
Borzasztó ronda megoldás mindenképp, de legalább nem fog 20 perc múlva (most ez van a reloadTime-ban) újrafrissülni az oldal...Akkor íme egy Chrome/Opera extension kettőtök kutatása alapján egy kicsit kulturáltabb injektálási módszerrel.
manifest.json
{
"content_scripts":
[
{
"matches": [ "http://mno.hu/*", "https://mno.hu/*" ],
"js": [ "content.js" ],
"run_at": "document_start"
}
],
"web_accessible_resources":
[
"patch.js"
],
"manifest_version": 2,
"name": "setTimeout patch",
"version": "1.0.0"
}patch.js
Window.prototype._setTimeout = Window.prototype.setTimeout;
Window.prototype.setTimeout = function(func, delay) {
if (func.toString().indexOf("reloadBlocker") !== -1)
console.log('blocked setInterval', delay);
else
Window.prototype._setTimeout.apply(this, arguments);
};content.js
try {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.responseText) {
var patch = document.createElement("script");
patch.type = "text/javascript";
patch.innerText = xhr.responseText;
(document.head || document.documentElement).appendChild(patch);
}
};
xhr.open("GET", chrome.extension.getURL("patch.js"), true);
xhr.send(null);
}
catch (ex) {
console.log(ex);
}Vagy Firefox alá Greasemonkey scriptként:
// ==UserScript==
// @name setTimeout patch
// @namespace mno.hu
// @include http://mno.hu/*
// @include https://mno.hu/*
// @version 1
// @run-at document-start
// @grant none
// ==/UserScript==
window._setTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
if (func.toString().indexOf("reloadBlocker") !== -1)
console.log('blocked setInterval', delay);
else
window._setTimeout.apply(window, arguments);
};Érdekes módon itt csak a window példányt tudtam manipulálni, és abban lecserélni a metódust, magát a Window osztályt nem, hogy a prototípusban cserélgessek.
Természetesen nem vártam ki a 20 percet, a naplóba írt üzenettel teszteltem a kódot.
-
dqdb
nagyúr
A kódot tartalmazó .js fájl blokkolása valószínűleg nem lesz jó, mert más funkciót is kinyírhatsz vele. Neked egy olyan user JS vagy extension kell (böngészőtől függ, melyik), ami document_start vagy DOMContentLoaded eseménykor (böngészőtől függ, melyik) lefut, és lecseréli a window.setTimeout vagy window.setInterval függvényeket (a weboldaltól függ, melyiket használja). De ezt is ésszel kell tenni, hogy tényleg csak azt a kérést blokkold, amelyik az újratöltésért felelős.
Most lusta vagyok összedobni egy pontosan ilyet, de íme egy Chrome/Opera extension, aminek hatására a böngésző letagadja, hogy tud WebM videót lejátszani, kiindulási pontnak tökéletes:
manifest.json
{
"content_scripts":
[
{
"matches": [ "http://*/*", "https://*/*" ],
"js": [ "content.js" ],
"run_at": "document_start"
}
],
"manifest_version": 2,
"name": "Test Script",
"version": "1.0.1"
}content.js
var patch = document.createElement("script");
patch.type = "text/javascript";
patch.innerText =
"HTMLVideoElement.prototype.canPlayType = function(type) { console.log('HTML5 video', type); return type.substr(0, 10) === 'video/webm' ? '' : this._canPlayType(type); };";
(document.head || document.documentElement).appendChild(patch); -
dqdb
nagyúr
Szeretném JS oldalon is letesztelni a formom inputját:
var illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
if(illegalChars.test('obj.value')){
valid = true;
}Ez viszont mindenre false értéket ad akármilyen adatot is viszek be. Hogyan tudom azt megcsinálni, hogyha az illegalChars-ban lévő meghatározásból egy sem szerepel az inputban akkor true-t adjon.
Az obj.value szándékosan van aposztrófok között? Mert ha nem, akkor az sok mindent megmagyarázna, és ekkor már csak egy negálás hiányzik:
valid = !/[\(\)\<\>\,\;\:\\\"\[\]]/.test(obj.value);
-
dqdb
nagyúr
Közben felszórtam a laptopomra vmware-t player-t. Úgy gondoltam, hogy a rövidebb utat választom, és felteszek rá egy androidot, ahhoz vannak programok, és úgy nem kell GATT-al bohóckodni. Feltettem egy android-x86-4.4-rc2-t elsőnek, hát befagyott az induló képernyőnél, azt mondják ez ismert hiba 4.2 óta. Feltettem így egy 4.0-t, azon viszont nincs net, és a bluetooth-nál sem látom a bt smart eszközömet, csak a régi bt-os mobilomat. Biztos, hogy lehetséges vmware-el bluetooth smart-ot megosztani az emulált rendszerrel?
Virtualizált Androiddal nem foglalkoztam még. Az évek során Windows hostokról (XP, Vista, 7, 8.1) adtam már át Linux (Ubuntu, Xubuntu, CentOS, Manjaro) és Windows (XP, 7, 8.1, 10, 2012 Server) guesteknek USB-s perifériákat (webkamera, fényképezőgép, tuner, kriptotoken).
A periféria sikeres átadásának természetesen feltétele, hogy a guest rendszerben legyen hozzá driver, az Android guest itt nagyon hamar el tud bukni, mert simán elképzelhető, hogy a kernelbe nincsen belefordítva a szükséges driver (ezen csak saját kernel fordításával tudsz továbblépni). Az ellenben nem feltétel, hogy a hoston legyen hozzá a VMware úgy is át tudja adni (például egy őskövület fényképezőgépről, amelyhez nincsen 32 bites XP-nél frissebb driver, virtualizált Linuxon keresztül tudom letölteni a képeket).
De eddig WinJS-ről volt szó, annak mi köze az Androidhoz?
-
dqdb
nagyúr
Bármi ötlet, hogy win7-ről hogyan tudom megoldani a winjs befordítást és tesztelést?
Gondolom az integrációs tesztekhez kell majd virtualbox meg emulált 8.1, jól sejtem? Egyáltalán bluetooth kapcsolatot hogyan tudnék tesztelni egy olyan gépen, amin nincs is? 
Lehet, hogy egyszerűbb lenne, ha a win8 adaptereket a tabletemen tesztelném(azon 8.1 van), a kódot meg git push-al frissíteném rajta. A maradék integrációs teszteknél meg kimockolnám a win8 specifikus adaptereket. Életszerű ez az elgondolás?
Rendelsz Kínából USB-s BT4.0 adaptert (bár itthon sem sokkal drágább), azután VMware Playerben telepítesz Windows 8-at, és ott át tudod adni* neki az USB-s eszközt. Ha van elegendő mennyiségű memóriád és megfelelő processzorod, akkor a legkényelmesebb VM alól végignyomni a teljes fejlesztést.
* elvileg ilyet a VirtualBox is tud, csak kölcsönösen nem kedveljük egymást, így olyan messzire kerülöm, amilyen messze lehet
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
dqdb
nagyúr
Várjatok, én 4Gb-s gépen használom a VS2013 Community-t, és tűrhetően mozog (pontosabban 3 gépen, egy 16Gb-s I7-esen, egy 8Gb-s A10-esen, és egy 4Gb-s fing processzorú notebook-on). Ami viszont rengeteget számít alatta az az SSD tapasztalataim szerint.
A nincsen TFS-t furcsálom, mert minden maszek projektemet TFS-en tartok.
Az SSD valószínűleg elfedi a memóriahiány miatti vergődést (én 4 GB memória mellett kizárólag HDD-n próbáltam). 4 GB-tal sokkal lassabban indul a VS2013, mint egy VS2010, sokkal lassabban tölt be 30-40 projektes solutionöket, és vannak olyan editorok, amelyek használatához a vergődés miatt ekkor fokozott türelem kell (a XAML például ilyen), szóval a lassúság érzete lehet projekttípustól függő is. Én ezért aztán reflexből 8 GB memóriát adtam legutoljára a VM-nek, amikor ki kellett deríteni egy OS specifikus nyűgöt, és szükség volt adott platformon ehhez fejlesztői környezetre

A TFS-es rész innen vettem, VS2015-ben szigorítottak rajta (bár ez engem az otthoni gépen nem fog érinteni, nem kedvelem a beépülő verziókezelőket, ha SVN és Git repóid vannak, akkor funkcionalitásban és megbízhatóságban a SmartSVN és SmartGit közelében sincsen egyik sem).
-
dqdb
nagyúr
Igazából lehet, hogy nekem van kevés memóriám (4GB) de amikor én használtam a VS Community-t akkor úgy felzabálta az összeset, hogy egy idő után használhatatlanná vált. Néztem pár beállítást erre nézve az interneten, de a problémán az se javított, csak kitolta az elfogadható kódolást egy kicsit tovább. Maga a program szerintem is jó, csak sajnos emiatt nem tudom használni.
A VS2010 volt az utolsó Visual Studio, amelyik még beérte 4 GB memóriával. Ezután alaposan hozzányúltak az IDE alapjaihoz, ami azt eredményezte, hogy 8 GB alatt kínszenvedés használni, de ha van ennyi memóriád, akkor a VS2012 és utódai érezhetően sokkal-sokkal gyorsabbak ugyanazon a gépen, mint a VS2010.
A Community Edition pedig lényegében egy Professionalnek felel meg némi tudásbeli (nincsen TFS, CodeLens) és némi licencbeli (egyéni fejlesztők és legfeljebb 5 fős cégek használhatják) korlátozással.
-
dqdb
nagyúr
Ja értem, hát ilyen nemsokára leadandó házikat azért az ember kicsit másképp közelít meg, mint egy éles projektet.
Előbbinél inkább az a lényeg, hogy a legtöbb pontot összekapard (max. nem kapod meg a teljes pontot amiatt, hogy nem ott jön be a figura, ahol kéne, ha nem marad időd kijavítani, de legalább a többi feladatból is megoldottál valamennyit), utóbbinál meg az, hogy tényleg a speckónak megfelelően működjön, különben az ügyfél mérges lesz. Ha valós, nem mindig előkerülő, de adott esetben elég problémás bugról van szó egy éles projektnél, akkor azt nem jó ellökdösni, hogy majd megcsinálom, mert akkor elfelejtődhet...adott esetben elég problémás bugról van szó egy éles projektnél, akkor azt nem jó ellökdösni, hogy majd megcsinálom, mert akkor elfelejtődhet
Nem, ilyen nem fordul elő sosem, mert ugyebár mindenre van egyXKCDtestcase![;]](//cdn.rios.hu/dl/s/v1.gif)
És erről jutott eszembe: valaki belemélyedt már jobban a kliensoldali automatizált tesztelésbe? Vajon mekkora beletanulási ideje lehet egy Jasmine+PhantomJS párosnak? A többi rész után szeretném a webes UI tesztelését is automatizálni, a kollégákkal ellentétben a Jenkins mindig ráér foglalkozni vele, és alaposan dolgozik

-
dqdb
nagyúr
PR = Pull Request.
Az io.js-t ugy kepzeld el mint egy node-ot steroidokon
Ujabb V8 verzio van alatta ezaltal az uj fejlesztesek amiket a Google tesz a V8-ba es libuv-be (ez mar nem google) az hamarabb jut el hozzank, fejlesztokhoz. Pl ES6 meg par uj global API. iojs-hez is hasznalhatsz Mindent amit node-hoz.Azt azért hozzá kell tenni, hogy natív kódot tartalmazó csomag esetén előfordulhat, hogy Node.js-sel megy, míg io.js alatt fordítási hibát kapsz a telepítésekor (a frissebb V8-ben változott valamelyik API felülete, és még nem frissítették a csomagot).
Ne kérdezd, hogy melyik csomaggal volt problémám, mert arra már sajnos nem emlékszem. Pár hete futottam bele, amikor (nem webfejlesztőként) egy konkrét feladatra eléggé határozott elképzelésekkel kerestem a projekt alapjának összerakásához generátort vagy boilerplate kódot.
-
dqdb
nagyúr
"Aki nem tudja, mi a különbség a Java és a JavaScript között, annak az ECMAScript garantáltan nem mond semmit."
Annál jobb, legalább a Java és JavaScript közé egyenlőségjelet tévők elbizonytalanodnának, hogy jó helyen járnak-e.
Igen, pontosan ez volt a javaslatom mögötti ötlet.
-
dqdb
nagyúr
Így is újból és újból érkeznek kérdések Javával kapcsolatban ide, most még a Javás gőzölgő csésze meg is erősíti a tévhitet, hogy ugyanaz a kettő, pedig az első mondat az összefoglalóban az, hogy nem összekeverendő.

Szerintem a topik címét kellene módosítani JavaScript/ECMAScript topikra, az ES megnevezés jelenléte eléggé jó szűrő lenne.
-
dqdb
nagyúr
Ha ennyire nem vagy járatos a témában, hogy a jquery-mockjax leírásában is elvesztél, akkor inkább telepítsél egy webszervert, létezik portable megoldás is rá. Vagy használj olyan böngészőt, amelyik file:// protokollnál XHR esetében még nem szigorított a source origin policy-n. A Chromium alapú böngészők kizárólag extensionökben engedélyezik a file:// címekre az XHR hívásokat, de ez se nem hiba, se nem hiányosság, hanem biztonsági-tervezési döntés: itt a 4.6.1.3 pontban kezdődik, és itt a 4.4 pontban folytatódik a kifejtése.
Jim-Y: ráadásul a DevTools tudása bővíthető extensionök segítségével.
-
dqdb
nagyúr
hello
van egy kis problémám

használok egy oldalon scriptet ami betöltene egy topmenu.html-t, de persze chromeba nem jo, csak firefoxba engedi local filet meghivni. kérdésem hogy valahogy nem lehet megkerülni ezt a xmlhttprequest dolgot??
jasmine jquery nem jó erre ?csatolok pár képet a hibárol
http://kepfeltoltes.hu/141214/1230236937b_www.kepfeltoltes.hu_.png
http://kepfeltoltes.hu/view/141214/a_www.kepfeltoltes.hu_.pngA megoldás egyszerű: felülírod az oldalon a beépített XMLHttpRequest objektumot, legalábbis annak a send() metódusát. Itt van rá egy példa, de léteznek XHR mockup könyvtárak is, ahogyan az általad is említett jasmine-ajax is alkalmas lehet erre.
De ha ennyire offline kell működnie az oldalnak, akkor miért a jquery.com-ról töltöd be a jQuery-t, és nem helyi fájlból?
-
dqdb
nagyúr
Az alábbi kód valamiért nem fut le Firebugban, a következő a hibaüzenet:
SyntaxError: 09 is not a legal ECMA-262 octal constant
var myDate = new Date(1989,09,24);Előre is köszönöm a válaszokat!
Ha nullával kezdesz egy kizárólag számjegyekből álló numeric literalt, akkor az JS-ben (és egyéb C-szerű szintaktikából eredeztetett nyelvekben) azt jelenti, hogy nyolcas számrendszerben adtad meg az értéket. Mivel nyolcas számrendszer, így abban csak a 0-7 számjegyek érvényesek, a 9 nem.
27= 0x1b = 033
Szóval szépérzéktől vezéreltetve ne írd ki a kezdő nullákat sosem, mert csúnya meglepetések érhetnek miatta.
month: Integer value representing the month, beginning with 0 for January to 11 for December. [link]
Kíváncsi lennék, ki volt az az idióta, aki ezt ilyenre kitalálta, és miért tette. De igazából az egész Date objektum egy állatorvosi ló a mit ne típusú JavaScript programozói hibák szemléletes bemutatására. -
dqdb
nagyúr
Projekttől függ, hogy mennyien dolgozunk rajta. De se nekem, se munkatársamnak nincs ie-je (mac, linux). Általában ami chrome alatt fut az fut FF alatt is. A hét tanulsága, hogy k*rvára nem. Ez a szabványrendszer lehetne egy kicsit jobb, keresztplatform ide vagy oda...
Mindegy, ezek után FF alatt is megnézem a kódomat.
Ha dátumról van szó szövegesen, akkor mindig az ISO 8601 formátummal próbálkozzál, a legkevesebb nyűg valószínűleg azzal lesz. ECMAScript 3-ban nem volt szabványosítva a mező formátuma, ECMAScript 5-ben egyértelműen szerepel az ISO 8601 támogatás szükségessége. A legtöbb böngésző történelmi okok miatt az MDN-en szereplő RFC2822 formátumot is támogatja, de ezenkívül bármi más esetében már érhet meglepetés.
-
dqdb
nagyúr
Ez egy rém gyenge próbálkozás egy olyan checksum megvalósításra, amelyet alapvetően kisbetűs szavakra talált ki valaki.
-
dqdb
nagyúr
-
dqdb
nagyúr
For ciklusban az általad használt módon nem illik az innerHTML-hez hozzáadni tartalmat, ugyanis ilyenkor minden alkalommal a böngésző változást észlelve újrarendereli az oldalt. Egy változóba gyűjtsd össze a teljes változást, és egyszer nyúlj hozzá az innerHTML-hez. Szintén nem illik for ciklusban a DOM-ból lekérdezni állandóan egy objektumot, amikor azt a ciklus előtt cache-elhetted volna egy változóba.
function f()
{
var min = parseInt(document.getElementById("min").value);
var max = parseInt(document.getElementById("max").value);
var s = "";
var paddingLength = -max.length;
var paddingString = new Array(-paddingLength).join("0");
for (; min <= max; min++)
s += (paddingString + min).slice(paddingLength) + " | ";
document.getElementById("box").innerHTML = s;
}Most nézem, hogy a max.length az valójában max.toString().length akart lenni ...
-
dqdb
nagyúr
Portolom a kérdést a html-es topicból...
Azt hogy lehetne megoldani, hogy az előbbi kódomban [link], ha a max értéke mondjuk százas vagy ezres nagyságrendű, akkor az egyes helyiértékeket 0-val töltse fel vmi ciklus? Nem bírok rájönni sehogy sem.
Pl: 001... 010... 100 vagy 0001... 0010... 0100... Arra gondoltam kérjem le az input value hosszát a document.getElementById('max').value.length kóddal. (?)
For ciklusban az általad használt módon nem illik az innerHTML-hez hozzáadni tartalmat, ugyanis ilyenkor minden alkalommal a böngésző változást észlelve újrarendereli az oldalt. Egy változóba gyűjtsd össze a teljes változást, és egyszer nyúlj hozzá az innerHTML-hez. Szintén nem illik for ciklusban a DOM-ból lekérdezni állandóan egy objektumot, amikor azt a ciklus előtt cache-elhetted volna egy változóba.
function f()
{
var min = parseInt(document.getElementById("min").value);
var max = parseInt(document.getElementById("max").value);
var s = "";
var paddingLength = -max.length;
var paddingString = new Array(-paddingLength).join("0");
for (; min <= max; min++)
s += (paddingString + min).slice(paddingLength) + " | ";
document.getElementById("box").innerHTML = s;
} -
dqdb
nagyúr
Hali.
Html-ben megirtam a bejelentkezo feluletet.
1.kerdes:
Javascript-el meg lehet irni hozza a tobbit? (tehat hogy ne csak ott legyenn az oldalamon, hanem mukdjon is.)
Vagy ezt csak php val lehet?
Illetve ha javascriptel is meg lehet irni akkor a ketto kozul melyikkel erdemes nekivagni?2.kerdes:
Nem tudom hogy a"kijelentkezest hogy lehet megirni. Vagy ez csak akkor fog latszani ha javascriptel vagy phpval megirom hozza a tobbit?Javascript-el meg lehet irni hozza a tobbit? (tehat hogy ne csak ott legyenn az oldalamon, hanem mukdjon is.)
Vagy ezt csak php val lehet?
Meg lehet JS-ben is írni, ha a szerveren NodeJS fut, és te abban valósítod meg a rendszeredet, de te valószínűleg nem erre gondoltál. A megoldás lehet PHP, Ruby, Python, ASP.NET vagy bármilyen szerveroldali megoldás, az a lényeg, hogy ehhez nem elég a kliensre letöltődő HTML + JS, hanem kell egy kiszolgáló és rajta futó logika.Nem tudom hogy a"kijelentkezest hogy lehet megirni. Vagy ez csak akkor fog latszani ha javascriptel vagy phpval megirom hozza a tobbit?
Session alapú megoldás kell neked, esetleg REST implementációnál ticketek használata. De úgy érzem, mindkettőtől még nagyon messze állsz, előbb a kliensoldali JS-tel kellene képbe kerülnöd, és látni, mi a kliens feladata, mi a szerver feladata, mi fut a kliensen, mi fut a szerveren, a kettő hogyan kommunikál.Sk8erPeter: csak 15 perc, mert egy másik feladványra elkészült előtte egy hasonló stílusú Ascii85 megoldásom, és azt donornak felhasználtam. Jó móka volt az egész, és úgy éreztem, a végeredmény kellően sokkoló lett első pillantásra ahhoz, hogy egy uglifieren ne küldjem még keresztül a kódot

-
dqdb
nagyúr
Ezmiezezez? Még nem használtam, regelni kéne hozzá, és nem tudom, hogy megéri-e. Annyi lejött, hogy fejlesztőtréningelő valami.
Nagyon jó móka, és kiválóan alkalmas a kevés szabadidőd elszúrására
Röviden arról van szó, hogy valaki kitalál egy feladványt, megírja hozzá a unit testeket, és neked olyan kódot kell írni, ami átmegy a teszteken (természetesen a teszteket, valamint mások megoldásait csak azután ismered meg, miután megoldottad a feladatot).Érdemes megnézni mások megoldásait, lehet belőlük tanulni. És persze hirtelen ötlettől vezérelve, pusztán szórakozásból lehet alkotni tömör, de lassú és erőforrás-pocsékoló, tökéletesen karbantarthatatlan kódot, mint a for ciklustól mentes Base64 megoldásom

-
dqdb
nagyúr
Hali.
$scope.customize = function(category, subCategory, id, result) {
var item = {};
console.log(category);
console.log($scope.sportEvents.category);
//....Számomra furca, hogy ha a console-ban a category: "labdarúgás" van kiírva, azt fogom, és $scope.sportEvents.category ide a category helyére beleégettem, hogy labdarúgás, akkor babán működik, megkapom a kívánt adatot.
Viszont, ha a fenti kódot próbálom alkalmazni, akkor szevasz, kapom az Undefined-ot a pofámba.Hogyan lenne szemantikailag helyes, hogy a category-t megemésze?
(A category változó tartalma dinamikusan változik.)console.log($scope.sportEvents[category]);
Nem mindegy, hogy a category nevű propertyt vagy a category nevű változóban megadott nevű propertyt szeretnéd elérni.
Kétféle módon tudod egy objektum egy propertyjét elérni: vagy obj.name, vagy obj["name"].
-
dqdb
nagyúr
Hali.
Javascript-ben kell egy tömbön végig mennem, amiben json objektumok vannak. És mivel csoportosítani kellene a nyers adatokat, akkor probálok automatikusan létrehozni egy asszociatív tömböt, ami bukó sajnos, mert van space, vagy speckó ékezetes magyar karakterek...
Legyen ez a nyers adat (az elegendő)
[{category: "játékok", sub_category: "angol legó"}]és akkor egy forEach-ben:
var list = {};
angular.forEach(data, function(element) {
var key = element.category;
var sub = element.sub_category;
// És itt jönn a hiba, hogy az angol legó property nem jó. list.játékok.angol legó -ra nem tudok hivatkozni.
list[key][sub] = element;
});Nézegetem google-ban a cuccost, de egyelőre nem találom a megoldást. Ilyenkor mit lehetne csinálni?
PHP-ban így tudom rendezni, de inkább teszek egy próbát angularjs-sel, hátha kliens oldalon összelehetne ezt barkácsolni (elméletben a javascript sok mindenre jó).
Vagy másmilyen "asszociatív tömb" kell, vagy kódolni kellene a tömb kulcsokat...
Nem asszociatív tömböt hozol létre, hanem egy objektumot propertykkel, és nem a space-szel és ékezetes karakterekkel van a probléma, ugyanis JS-ben egy property neve megkötések nélkül lehet bármilyen szám vagy szöveg, hanem azzal, hogy elfelejted a kategória szintjét inicializálni.
Ha 10-20 elemnél többet küldesz le a szerverről, akkor azt érdemes kategória-alkategória szerint rendezve megtenni, ekkor a legutoljára használt kategória és alkategória cache-elésével sokkal gyorsabban fel tudod építeni a kétszintű fát.
-
dqdb
nagyúr
http://jsperf.com/comparison-of-getelementby-and-queryselector
Nem tudjátok véletlenül, hogy a querySelectorAll miért teljesít ilyen rosszul?
Opera 12-ben pont az a leggyorsabb

getElementById 2,753,807
querySelector 249,225
getElementsByClassName 1,654,260
querySelectorAll 3,278,591
jQuery - id 849,313
jQuery - class 160,468Opera 25 (más Blink motoros böngészőben hasonlóak lehetnek az értékek):
getElementById 16,966,523
querySelector 6,662,027
getElementsByClassName 15,028,808
querySelectorAll 284,449
jQuery - id 1,267,419
jQuery - class 333,583Szóval bár Cathfaern magyarázata szerintem teljesen logikusnak tűnik, a számok alapján egyszerű optimalizálatlanság lehet a háttérben. Az igazán érdekes számomra az, hogy a többi megoldásnál látható hatalmas különbségek jQuery használatával mennyire eltűnnek.
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Dell Latitude 9420 i5-1145G7 14" FHD+ 16GB 512GB 1 év garancia
- Macbook Pro 14" A2442 2021 M1 MAX 32/512 Astro
- Macbook Pro 14" A2442 2021 M1 MAX 32/1TB Astro
- Lemezes PlayStation 5 Slim CFI-2016 // 2 kontrollerrel // töltőállomás // távirányító
- HP ZBOOK FURY 15 G7 Tervező Vágó Laptop -70% 15,6" i7-10850H 32/512 Quadro T2000 4GB LTE
- HIBÁTLAN iPhone 14 Pro Max 128GB Space Black - 2 ÉV GARANCIA - Kártyafüggetlen, MS5292
- Ryzen 7 9800X3D // Számla // Garancia //
- Xiaomi Redmi Note 13 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- 27% - Konfiguráció G5905 / RX580 / H510 / 16GB 2666Mhz / 1TB SSD / 500W
- LG UltraGear 27GR75Q-B IPS Monitor! 2560x1440 / 165Hz / 1ms / FreeSync / G-Sync
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.![;]](http://cdn.rios.hu/dl/s/v1.gif)








