Hirdetés
-
Computex 2024: a GeIL memóriái között akad olyan, ami 10 GHz fölé merészkedik
ph A vállalat portfóliójában a hétköznapi DDR5 DIMM-eken kívül vannak CUDIMM, CSODIMM, CAMM2 és LPCAMM2 formátumú újdonságok is.
-
Csak 2025-ben érkezik a Little Nightmares III
gp A sokak által várt folytatás sajnos nem fog idén megjelenni, kicsit tovább kell rá várnunk.
-
A hajlíthatók kedvence lehet a Dimensity 7300X 5G
ma Átcímkézés helyett csíkszélességet váltott a MediaTek, népszerű Motorolában debütálhat.
-
PROHARDVER!
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
-
Zedz
addikt
válasz martonx #6400 üzenetére
Én egy kicsit úgy érzem, hogy mostanában kezd normalizálódni a helyzet. Tény és való, hogy nem is oly rég hatalmas káosz volt, legalábbis én így éltem meg a dolgot. Minden nap egy "next-gen" framework, bundler, libek ... stb, az ember csak kapkodta a fejét. Habár ma is gyors ütemben jönnek ezek, azért már könnyebb eligazodni is kiválasztani a megfelelő toolt az adott feladathoz. A babel szerintem már alap dolog lett, és már minden nagyobb csoda ad egy cli-t, amivel megkímélve a fejlesztőket a konfigurálástól, out-of-box ad egy app templatet. React, Vue, Angular, hogy csak a nagyobbakat említsem, már kb. 5 perc alatt felállítható egy környezet.
Eddig azért ment az utánajárás rengeteg mindennek, a React és NG2 sem igazán találta még a helyét, de mintha már látnánk a fényt az alagút végén.
> Azt látom, hogy a fentiekben a js világ (átvéve a szerepet a php-tól) jelenleg világelső.
Szerintem a PHP esete egy kicsit más. A már nem olyan rossz és lassú nyelvből egész szépen kikupálódott. Meg amúgy a PHP világban inkább a sok wannabe kontár a probléma és nem a nyelv hibái . Nyilván nem tökéletes nyelv, de ez a hatalmas PHP hate is túl van tolva.A JS-t viszont most tolják minden platformra, boldog-boldogtalan abban fejleszt, a PHP pedig mindig is a szerveren maradt.
[ Szerkesztve ]
-
sztanozs
veterán
A JS-t viszont most tolják minden platformra, boldog-boldogtalan abban fejleszt, a PHP pedig mindig is a szerveren maradt.
Ez amúgy szerintem a JS egyik nagy problémája.
Mivel a JS egy (jelentős) része kliens oldalon fut és lehetőség sincs a forrás védelmére vagy validálására, így maga a JS, mint platform rendkívül sebezhető.JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Zedz
addikt
válasz sztanozs #6402 üzenetére
"Ez amúgy szerintem a JS egyik nagy problémája."
Szerintem is, de nem a kliens oldali "ellenőrzés" miatt. Ez a klasszikus sokat akar markolni dolog, aminek a végét jól ismerjük. Én nagyon szeretek JS-ezni, de szvsz helyén kell kezelni a dolgot. Pl. egy webes SPA összerakás számomra egy érdekes dolog, szívesen foglalkozok vele, de ha azt mondanák mondjuk holnap, hogy portoljam át a Javaban írt Androidos appot amin dolgozok Javascriptbe, akkor inkább levetném magam a teraszról.
martonx kolléga írta le egy pár hozzászólással feljebb, hogy ismétlődnek a dolgok. És ebben igaza van, szerintem jól látszik, hogy most egy kicsit megint kezdenek "bezárkózni" a platformok. Ugye az Apple a kezdetektől az "egy hardver egy szoftver" szemléletet követi, de az MS és Google utolsó húzásai is ezt az irányt mutatják fel. Ha ez lesz az elkövetkező pár évben, akkor lehet, hogy a fene nagy "JS-t mindenhová" hype hamarosan abbamarad, és végre visszakerül az eredeti helyére.
(#6403) martonx Minden ilyen szűk látókörű embert azonnal ignorálok. Úgy sem lehet arról, hogy egy nyelvet helyesen is lehet használni.
-
tick
aktív tag
Üdv!
Megoldható valahogy angular esetén hogy minden egyes controller betöltéskor lefusson egy function anélkül hogy minden egyes controllerbe külön megírnám?
Elrejtett menüpontokat szeretnék megjeleníteni "ng-show"-val, ehhez pedig szükségem lenne egy API-ból nyert értékre.
Prodlémák:
-menüpontok az "ng-view"-n kívül esnek, így csak rootScope értékekkel tudom változtatni
-a login képernyő is egy controller, a menü szintén látszik így nem tehetem ".run"-ba, mivel csak a tényleges login után kap valós választ az API-tól.
(nem baj ha "hackelhető" és megjeleníthető a menüpont, a backend nem fogja kiszolgálni)Gondoltam factoryra, de az async $http kérés eredményét nem tudom visszaadni sync módon az "ng-show"-nak.
Everything that has a beginning... has an end
-
DNReNTi
őstag
Szia,
Nem teljesen latom at a problemat, de nem e lehet megoldas, hogy a szukseges erteket a root controllerben definialnad, es azt hasznalnad fel a "gyerekekben"? Vagy ez az ertek valtozik minden controllerben? Akkor nincs mese, irni kell ra service-t, es azt hivni valami parameterrel, minden alkalommal. Lehet nem ertem.
but without you, my life is incomplete, my days are absolutely gray
-
tick
aktív tag
válasz DNReNTi #6409 üzenetére
Azt hiszem sikerült megoldanom. Félig.
A fő gondom az volt hogy nem tudom lekérni az értékét amíg a login nem történt meg, viszont a login controllere erre pont megfelelt. A sikeres login után, de még a redirect előtt egy plusz lépésként bekerült az API call, plusz az érték rootScopeba való tárolása.
Így most ~100ms-el tovább tart a login, plusz csak re-login után lép érvénybe ha esetleg változna. De szerintem ez belefér.Everything that has a beginning... has an end
-
Zedz
addikt
Sziasztok,
Akad köztünk esetleg egy Angular 2 ninja?
-
Zedz
addikt
válasz DNReNTi #6412 üzenetére
Remek, akkor lehet tudsz segíteni.
Adott 1 komponens és 1 service. A service, ami a userről tárol dolgokat, így néz ki (ami nekünk most fontos):
@Injectable()
export class Auth {
//Store profile object in auth class
userProfile: Object;
constructor() {
// Set userProfile attribute of already saved profile
this.userProfile = JSON.parse(localStorage.getItem('profile'));Ezt a userProfile objectet szeretném felhasználni egy komponensben, aminek a constructora így fest:
constructor(private auth: Auth, private authHttp: AuthHttp, private router: Router) {
this.username = auth.userProfile['username'];
}Kérdés:
A komponens HTML kódjában simán tudok hivatkozni a username-re a következőképp: {{ auth.userProfile.username}}.Akkor a constructorban miért ['username'] módon érem a kívánt értéket?
-
Zedz
addikt
válasz fordfairlane #6414 üzenetére
Igen ez megvan, csak amíg egy leírásban úgy kérik el az értéket ahogy nálam a templateben, addig az a módszer itt nem működik.
-
DNReNTi
őstag
Furcsa, mert szerintem is mukodnie kellene, bar sose hasznaltam igy, es ezzel eljutunk oda: hogy egyebkent ennek igy mi ertelme? Marmint, a komponensedben rendelkezesre all az egesz Auth osztaly, benne minden user adattal, mi szukseg akkor kiszervezni plusz egy attributumba a felhasznalonevet? Egyebkent ez lehet (tenyleg csak tipp), valami TS specifikus dolog. Az Auth.userProfile tipusa sima Object, nincs interface vagy valami specifikus osztaly (pl UserProfile osztaly) ami leirna, hogy milyen attributumai vannak, tehat feltetelezheti, hogy nincs username property, es ezt te amugy nem is ellenorzod. Bar ha igy lenne akkor mar szerintem a TSC dobna warning-ot. Egyebkent pont ilyenkor jon jol hogy a TS tipusos, tessek hasznalni, egy userProfile ne legyen mar egy standard osztaly! Remelem segit megoldani.
but without you, my life is incomplete, my days are absolutely gray
-
fordfairlane
veterán
Tényleg nem tudom hová tenni a dolgot. Nem tusok sokat a Typescriptről, de tudtommal az object abban is object.
Ha jelen esetben auth.userProfile egy object, és van neki egy username nevű property-je, elvileg teljesen mindegy kell hogy legyen az, hogy dot notation vagy bracket - subscript notation-nel próbálod elérni. Még abban az esetben is, ha nem sima propertyről van szó, hanem getter-setter függvényről.
x gon' give it to ya
-
DNReNTi
őstag
válasz DNReNTi #6416 üzenetére
Kicsit gugliztam a temaban, es ugy nez ki (igaz RC4 de) ez alatamasztja azt amit korabban irtam. Demo-t erdemes csekkolni (app/app.component.ts).
"...using dot-notation, causes a TypeScript validation error..."Kis javitas:
Kicsit felreertheto amit ideztem. Tehat ez csak akkor issue ha az adott property vagy annak tipusa nincs deklaralva, egyebkent persze mukodik, sot szvsz szebb dot-notation-t hasznalni a kodban.[ Szerkesztve ]
but without you, my life is incomplete, my days are absolutely gray
-
Aureal
senior tag
Volna egy olyan kérdésem, hogy ha vannak tömbjeim és egy adott tömbnek alá van rendelve a többi logikailag, mint ha "objektum osztály" lenne (lehet ez így hajmeresztő megfogalmazás) akkor miként, milyen módszerekkel lehetséges őket egymásnak megfeleltetni lekérdezési szinten?
pl. ha egy tömb elemei egy könyv fejezetcímeit tárolják és más-más tömbök az egyes alfejezetek címeit, oldalszámait stb. akkor egy navigáló menühöz hasonlóan, hogyan tudok adathelyes kapcsolatot teremteni közöttük, milyen JS eszközök alkalmasak ilyesmire?
[ Szerkesztve ]
-
Zedz
addikt
Köszönöm a válaszokat, így már világosabb a dolog.
Még egy kérdés: JWT authot faragott már valaki? Vagy hogy szoktatok beléptetni? Auth0-val küzdöttem most, de kezd egyre inkább teher lenni mint inkább kényelmes, szóval ha nem nehéz lehet megcsinálom inkább magamnak.Szerver oldalra nodejs-t gondoltam, kliensre meg ugye ng2.
-
DNReNTi
őstag
JWT-t en mar hasznaltam Slim-mel, kilens oldalon meg Angular 1x-el, mindket framework-hoz volt kesz package, azokkal tok egyszeru volt. Tuti hogy van node-hoz is, es gyanus hogy mar Angular2-hoz is letezik.
but without you, my life is incomplete, my days are absolutely gray
-
PumpkinSeed
addikt
Mi OAuth-t használunk beléptetésre. De a JWT szerintem nem egy túl jó megoldás beléptetésre, csak arra, hogy biztonságosan megtartsuk az adatokat a kommunikáció során. Az Oauth azért is jó, mert a token-ek miatt több szolgáltatás esetén is tudod kezelni a belépést. Esetleg JWT-t használhatsz arra, hogy megoszd a token-eket.
[ Szerkesztve ]
"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
-
Aureal
senior tag
Nézegetem ezt a példát most rá ismerkedés gyanánt, de nálam vmi nem kóser.
-
tick
aktív tag
az általad említett példával:
let konyvek = [
{
'cim':'Foo',
'fejezetek':['Lorem','Ipsum']
}, {
'cim': 'Bar',
'fejezetek': ['Dolor', 'Amet']
}
]
lényegében egy tömb ami objectekből ál, egy-egy object pedig tartalmazza a fejezetek címeit tömbként[ Szerkesztve ]
Everything that has a beginning... has an end
-
fordfairlane
veterán
Ez a tutorial egyszerűen szörnyű. A JSON nem objektum, hanem egy nyelvfüggetlen szövegalapú adatcsere-formátum, ami a javascript object-literal szintaxis szűkített változata. Amit te keresel az az ún. object literal, és az array-literal.
Object literal:
var a = {
key1: value,
key2: value,
key3: value
};value bármi lehet, amit változóba lehet tenni, másik objektum, tömb vagy függvény is.
Array literal:
var arr = [value1, value2, value3, value4];
Az értékek itt is lehetnek akármik, amik egy értékadás jobboldalán szerepelhetnek, tehát akár objektumok vagy függvények is. Tömbnél a kulcsok numerikus növekvő értékek lesznek.
Javascriptben az objektumok egyszerű konténerek, amik névvel azonosítható propertyket tartalmaznak. A property értéke lehet akár tömb is. A tömbök is hasonlóképp tartalmazhatnak bármilyen elemet, így objektumokat és tömböket kvázi tetszőlegesen ágyazhatsz egymásba.
Ha a kettőt kombinálod:
var a = [
{
key1: [
{
key1: value
},
{
key1: function() {}
}
],
key2: [1, 2, 3]
},
{
key1: ["string1", "string2"],
}
];[ Szerkesztve ]
x gon' give it to ya
-
Aureal
senior tag
válasz fordfairlane #6428 üzenetére
Köszi! Kezd alakulni...
Közben csak kiszenvedtem amit eredetileg akartam, egy leegyszerűsített mankó példán.
Lehet hogy szakszerűtlen profi szemmel, de én csak amatőrködöm saját szakállamra.Más: egy változó identifierjét hogyan kérdezhetjük le?
(pl. szükségem volna avar kategória = ...
kódból a "kategória" stringre.) -
-
Aureal
senior tag
válasz fordfairlane #6430 üzenetére
Csak annyi, hogy látok pl. "nodeName" stb. lekérdezésre is példát a tutor oldalakon és gondoltam, akkor mindent vissza lehet kérdezni a kódból...
-
Aureal
senior tag
válasz fordfairlane #6432 üzenetére
Nem teljesen. Pl. itt egy másik ahol egy képet leíró attribútumok name és value tulajdonságait kérdezik le. Nekem hasonló kellene, csak a <script> kódon belül a var változók azonosítóinak lekérésére...
[ Szerkesztve ]
-
fordfairlane
veterán
-
veterán
Sziasztok,
nincs valakinek egy egyszerű megoldása arra, hogy változóba olvassak egy txt file tartalmát? Eddig amit találtam a neten, nem nagyon működött.
-
Venyera7
senior tag
Sziasztok!
Annyi kérdésem lenne, hogy itt az oldalon található smilekat hogyan tudnám más oldalon lévő hozzászólásban megjeleníteni? Sajnos az ilyen jellegű kérdésre nem nagyon találtam topikot ezért írtam ide, ha rossz helyen járok elnézéseteket kérném, nem szerettem volna szemetelni a topikba. A segítségeteket előre is köszönöm.
-
Zedz
addikt
válasz Venyera7 #6440 üzenetére
Szia,
Jobb klikk a smilera, képcím másolása, és a címet bemásolod oda ahová szeretnéd.
Pl. ami a hozzászólásodban volt, annak ez a címe: https://prohardver.hu/dl/s/rl.gifTermészetesen csak akkor fog megjelenni ha:
1) képet tudsz beszúrni url alapján
2) HTML kódként fogod beszúrni
3) az oldal felismeri, hogy ez egy kép, és átalakítja neked a címet valós képpé -
Venyera7
senior tag
Köszönöm a segítséget! A témában nem vagyok jártas+ az EDGE böngészőben nem volt ilyen opció csak a chromeban, de megtaláltam a többi meg megy majd a HTML topikjába. Erre jutottam közben:
<img src="https://prohardver.hu/dl/s/v1.gif" width="20" height="20" alt=":-)">[ Szerkesztve ]
-
Zedz
addikt
Sziasztok,
Angular 2 mesterekhez ( és igazából bárkihez aki foglalkozott vele ) fordulnék most.
A cél, hogy async megnézzem egy formnál, hogy a username már létezik-e az adatbázisban.A componentem azon része ami meghívja a validátort, így fest:
'username': [null, [
Validators.required, Validators.minLength(4), Validators.maxLength(12), this.ussr.getUserNameFromServer
]],A service pedig így:
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { FormControl } from '@angular/forms';
import 'rxjs/add/operator/map';
@Injectable()
export class UserService {
constructor (private http: Http) {}
private extractData (res: Response) {
let body = res.json();
return body || { };
}
getUserNameFromServer = (c: FormControl) => {
const promise = new Promise (
(resolve, reject) => {
this.http.get('https://jsonplaceholder.typicode.com/users/1')
.map(this.extractData)
.subscribe(
(res: any) => {
if (c.value == res.username) {
console.log('taken')
resolve({'usernameTaken': true})
} else {
console.log('ok')
resolve(null)
}
},
err => { console.log(err) }
)
}
);
return promise;
}
}A probléma az, hogy a formom mindig invalid lesz. Több SO-s postban is így csinálják és elvileg végül ment mindenkinek, illetve pár blog cikk alapján is valahogy így kellene. Esetleg valakinek van ötlete, hogy mi lehet a baj?
-
DNReNTi
őstag
Csak tippelem, nem probaltam, de talan azert mert a
getUserNameFromServer()
nem egy boolean-nal hanem promise-szal ter vissza. Egyebkent tok fura nekem hogy a service-ben subscribe-olsz az observable-re, en ezt eddig mindig ugy csinaltam, hogy az observable-t adtam vissza. Nem tudom melyik a best ptactice, majd utanaolvasok.but without you, my life is incomplete, my days are absolutely gray
-
Zedz
addikt
-
DNReNTi
őstag
A konzol mit ir? Marmint "ok" vagy "taken"? Illetve megint csak tipp, nem e az a baj, hogy mindket esetben resolved lesz a promise? Nem e reject-elni kellene abban az esetben ha nem megfelelo? Egy probat megerhet.
Szerk:
Gyors guglizas utan talaltam meg egy lehetseges okot: Tobb helyen is azt latom, hogy a validator vagy
null
vagy valamilyen objektummal ter vissza, amiben a property ertekefalse
, nemtrue
mint a te esetedben. Tehat lehet jobb lenne aresolve({
'usernameTaken': true
});
helyett:resolve({
.
'usernameIsAvailable': false
});De ismet csak tippelgetek.
[ Szerkesztve ]
but without you, my life is incomplete, my days are absolutely gray
-
Zedz
addikt
-
DNReNTi
őstag
Koszi! Ma lett beallitva, meg nekem is szokni kell.
Illetve, igen kozben rajottem, hogy ket egymasnak ellentmondo dolgot sikerult leirnom. Hatha a false visszateres bejonne, bar kicsit idetlen szerintem (tehat lehet teljesen hulyeseg), a resolve / reject komboban tobb logikat lattam.
but without you, my life is incomplete, my days are absolutely gray
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs