- MIUI / HyperOS topik
- Vodafone mobilszolgáltatások
- Android szakmai topik
- Ezek a OnePlus 12 és 12R európai árai
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- MG4 menetpróba
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Netfone
- Motorola Moto G24 Power - hol van az erő?
Hirdetés
-
Free Play Days 2024 - 17. hét: Railway Empire, Prison Architect
gp Extraként a TramSim: Console Edition című játékot is kipróbálhatják az érdeklődők.
-
Rossz üzlet az EV-kölcsönzés
it Küszködik az EV-kölcsönzés miatt a Hertz Global, még több EV-t adnak el.
-
Ülésezik a hardveregylet
ph Az irodai készülékek és monitorok társaságát egy ház, egy egér és egy DAC egészíti ki.
-
Mobilarena
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
válasz honda 1993 #4349 üzenetére
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
[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
martonx
veterán
1. kód szervezésben. Bevallom szeretem az MVC / MVVM kód szervezést. Amikor jön egy json adat, az már megy is bele egy jó kis modellbe, és ezt bindolom a megfelelő helyekre.
2. a modellek változása realtime megjelenik a böngészőben, átvezetődik más modelleken, stb...
3. nagyon szépen lehet velük template-elni, pl. valamilyen lista elemeket kell generálnod a kapott jsonból. Ezt e frameworkök nélkül jobbára kénytelen vagy elkezdeni js kóddal foreach-ekkel megírni, és összerakosgatni string részletekből. Ha láttál már ilyen js kódot, akkor érteni fogod, hogy mire gondolok.
4. szépen el lehet velük szeparálni a különböző kód rétegeket (html - js és js-en belül a class-ok, service-ek, controller-ek)
5. a html-eidet is szépen kis darabokra tudod szedni, ezáltal sokkal átláthatóbb lesz a kódod
6. segítenek a routingban, DI-ban (ez mondjuk csak az angularjs-re igaz, aminek viszont a DI-át százszor is elátkoztam, szóval ez azért nem mindig előny). Knockouthoz meg azt húzol be pluszban, amit jól esik pl. pagejs + requirejs.
7. összességében, jóval kisebb kód mennyiséget eredményeznek, lásd Jim-Y esetét. Mondjuk angular-t telefonra a gyatra teljesítménye miatt én se mernék bevállalni, de egy 30Kb-os knockout-ot már volt, hogy használtam telefonon, és tök szépen, gyorsan tette a dolgát, pedig ez még az okostelefonok őskorában volt, amikor 1 magos 600Mhz-ez szutykokon futottak a mobilos böngészők első verziói.Mindezek ellenére abszolút nem azt mondom, hogy akkor most mindenki kezdjen el valamilyen js framework-öt használni, hiszem hogy a webes projektek jelentős részének nincs rájuk szüksége. De egy picit is jelentősebb projektet én már nem kezdenék el knockoutjs (rosszabb esetben angularjs) nélkül.
Én kérek elnézést!
-
honda 1993
senior tag
Koszi a valaszt.
A xamp telepitve van, es regebben mar irtam egy amolyan egysoros php kodot is amit a sikerult lefuttatnom azutan hogy a bongeszobe beirtam hogy "localhost".
De aztan valamiert abbahagytam es most a javascriptet tanulgatom (mintha ez picit egyszerubb lenne)Es majd csak kesobb fogok hozza a phphez.
Vegul is meg csak 3 honap telt el azota hogy a HTML ES A CSS nyelveket elkezdtem tanulni.
XD alias IKSZDé
-
Zedz
addikt
válasz martonx #4353 üzenetére
Nos, az MVC támogatása már szimpatikus nekem is, PHP oldalon egy ideje előszeretettel kalapálom így a kódjaim. Szerintem utánanézek először ennek a knockoutnak.
Találtam még egy ilyet, hogy Grunt, és ahogy olvastam ez az automatizálást segíti. Kliens oldalon ezt hogyan kell érteni? Mert szerver oldalon X időközönként ha lefut egy kód azt értem, vagy ha a Linuxal csináltatunk péládul napi dolgokat.. de kliens oldalon?
-
martonx
veterán
A Grunt-tal a kliens oldali framework-öd build-jét tudod automatizálni (pl. html-ek minifikálása, js-ek egybegyúrása, minifikálása, css-ek, stb...). Mint ASP.NET fejlesztő bevallom még sose használtam, mert az ASP.NET - Visual Studio alapból nagyon erős ezekben.
Nodejs-es, PHP-s világban viszont elég elterjedt.Én kérek elnézést!
-
Speeedfire
nagyúr
válasz martonx #4340 üzenetére
Elképzelhető, hogy én szerveztem rosszul, nincs kizárva.
Alapvetően én a visszakapott json adathalmazt egy változóba tettem bele.var AppViewModel = function(data) {
var self = this;
self.available = ko.observableArray([1,2]);
self.dataSource = ko.mapping.fromJS(data);Én mondjuk nem vagyok nagy js-es, nekem olyan max 2k lehetett eddig a legnagyobb kód jquery-ben. Viszont van egy új projekt, ahol annyi mindent bind-olok már jquery-vel, hogy valami másikat használnék a jquery helyett.
"és kiegészítőket kellett leszedni hozzá" - ko-hoz kiegészítőt kellett leszedned? Miért angular-hoz nem kell? Ok, routingot és DI-t valóban tud az angular alapból, de ezeket a komponenseket bármikor ko mellé is oda tudod tenni.
Konkrétan ez a 2 kiegészítő kellett:
- SWITCH/CASE binding for Knockout
- Knockout Mapping pluginFotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Jim-Y
veterán
Szia
Ami repetitív munka arra nagy valószínűséggel van grunt plugin. Könnyű konfigurálni, és jó pár fejlesztőkörnyezet is támogatja.
Mire használatos?
Amire szinte mindig:
* Lintelés, például jshint.
* Minifikálás, például uglify
* Unit tesztek automatikus futtatására, pl Jasmine, vagy Mocha, vagy QUnit
* LiveReload, pl grunt-watch. Ez utóbbi azt jelenti, hogy ha előre beállított fájlokat szerkesztesz, és elmented őket, akkor előre beállított taskok automatikusan lefutnak. Például ha a core *.js fájlaidat szerkeszted, akkor automatikusan lefut a lintelés, vagy ha browserify-t használasz akkor a bundling stb...
* KonkatenálásÉs akkor van még ami ritkábban:
* https://github.com/gruntjs/grunt-contrib
A JavaScriptes munka már rég nem csak annyiból áll, hogy megnyitsz szerkesztővel egy js fájlt és írsz pár függvényt ami csinál valamit a dommal, esetleg behúzod a jQuery-t.. Nagyon jó ökoszisztéma alakult ki az évek alatt, nagyon hasznos eszközökkel amik megkönnyítik a munkát.
Egyrészt ami régen nem volt, és most van, jó IDE-k. Jó build toolok, szerver oldali js környezet, npm, bower, browserify...
[ Szerkesztve ]
-
cSuwwi
aktív tag
A grunt (vagy akkor már inkább gulp) automatizált dolgainak jó része kiváltható egy jól beállított editorral.
Én pl. Sublime 3-at használok, lintelés (js, php) pár kattintással megoldható. Jobb is, mert kódírás közben már jelez ha gond van. Atommal is jól mennek az erős(?) nodejs támogatás miatt, bár W7-en tragikusan lassú.
Gulppal marad a minify, uglify, de főleg a sass konvertálás. Jó dolgok ezek, tényleg sok a helper tool mostanság. Aki még dolgozott a "hőskorban", amikor nem volt firebug meg egyéb toolok, akkoriban egy élmény volt debugolni de simán sitebuildeni is.
-
Jim-Y
veterán
-
Zedz
addikt
-
martonx
veterán
válasz Speeedfire #4357 üzenetére
A ko mapping pluginre soha nem volt szükségem. Ahogy switch case-re se, se ko, se angular alatt.
Ha anno ko alatt ennyi volt a modelled, pláne nem értem, hogy mi nem volt ezen átlátható?Én kérek elnézést!
-
Sk8erPeter
nagyúr
"By the way ... [link]"
Fasza, és tényleg működik:
https://www.jetbrains.com/student/
Megkaptam a visszaigazoló e-mailt @hszk.bme.hu-s címmel regisztrálva, ez a "JetBrains Product Pack for Students" licenc 2015 szeptemberéig érvényes ezekre a termékekre:
IntelliJ IDEA
ReSharper
AppCode
PhpStorm
PyCharm
RubyMine
WebStorm
dotCover
dotTrace
dotMemoryEz így korrekt. Na, ha már ilyen rendesek voltak, adok még egy esélyt majd a WebStormnak/PHPStormnak. A ReSharper meg Visual Studio-ban C#-kódoláshoz állítólag komoly mankó tud lenni.
Sk8erPeter
-
Jim-Y
veterán
válasz Sk8erPeter #4363 üzenetére
Hát ja, csak beszélnünk kellett róla, hogy drága erre akciózzák, ugye a kapcsolatok...
Én is most aktiváltam a lejárt verziómat, bár érdekes, de egy augusztus elején lejárt verziót simán tudtam használni..no mindegy, így a tisztaEgész komoly időbe telik míg beállítom a JsHintet és a JS Inspection-öket a saját szájízem szerintire De azért megéri, így legalább be tudok állítani egy olyan lintelést ami követi a saját stílusomat.
-
Daws
újonc
Sziasztok, megtudnátok mondani, hogy Windows 8-ban hogyan tudom a rendszerváltozókat szerkeszteni? A szerkesztés gomb nem működik a többivel együtt. (szürke mind)
-
martonx
veterán
Ugyanarra jók. Mindig érdekeltek, de sose jutottam el oda, hogy érdemben kipróbáljam őket. Igaziból a knockoutjs-el 100%-ban elégedett vagyok, az angularjs-t kipróbáltam a hype miatt. Nem hiszem, hogy érdemben kiderülhetne bármelyik más frameworkről is, hogy sokkal jobbat tudna mint ezek.
Én kérek elnézést!
-
Speeedfire
nagyúr
válasz martonx #4362 üzenetére
Egyáltalán nem volt átlátható.
Kipróbáltam a knockout-ot, mert főnök azt mondta mennyi jó. 1 hét alatt kellett megoldani a projektet (ko tanulással együtt) és ez lett belőle...működött meg minden, csak...
Lehet adnom kellene neki még egy esélyt az újabb ko-val és átnézni a teljes doksit hozzá.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Jim-Y
veterán
Haha..
"This feature was added for people who were beginners, so if you want to look like a beginner, then leave the semicolons out."
hallas utan
Crockford
agree[ Szerkesztve ]
-
Jim-Y
veterán
Ha valaki érdekelt az ilyenben, csináltam egy GitHub repot, ahova kollaboránsokat keresek. Valahol el kell kezdeni a netes jelenlétet, és hát, kezdjük kicsiben, az is több mint a semmi
A Smarty egy olyan repo amiben a hasznos, ötletes, mások számára is érdekes JavaScriptes megoldásokat gyüjtöm (folyamatosan). Ha neked is van hasonló, akkor esetleg összedobhatnánk amink van
-
Zedz
addikt
Sziasztok,
Elkezdtem szabadidőmben egy regisztrációs és login rendszert írni, Ajax segítségével. Olyan problémába ütköztem, hogyha a mellékelt kódban lévő ajax.done-ba rakom a preventDefaultot, akkor nem fogja meg a submitot és elküldi a formot.
Hogyan tudnám megcsinálni azt, hogyha a kapott válasz 0, akkor preventeljen, ha nem, akkor submitolja el az egészet?
-
PumpkinSeed
addikt
Üdv,
Olyan kérdésem lenne, hogy kizárólag lokális megnyitás alatt kapom ezeket:
Ha webszerverre felteszem akkor probléma nélkül műkö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
-
Jim-Y
veterán
válasz PumpkinSeed #4373 üzenetére
En atneznem a helyedben a link protokolokat, mert azokkal lesz a gond
A kepen file:// es utana egy webcim
A szerveren is
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>Normalisan kene megadni az src attributomot.
[ Szerkesztve ]
-
Jim-Y
veterán
válasz PumpkinSeed #4375 üzenetére
Te tudod..
Mukodik:
<html>
<head>
<script src='http://code.jquery.com/jquery-1.11.1.min.js'></script>
<script src='http://code.jquery.com/jquery-migrate-1.2.1.min.js'></script>
</head>
<body>
<h1>Test</h1>
<script>
console.log($('h1').text());
</script>
</body>
</html>Nem mukodik:
<html>
<head>
<script src='//code.jquery.com/jquery-1.11.1.min.js'></script>
<script src='//code.jquery.com/jquery-migrate-1.2.1.min.js'></script>
</head>
<body>
<h1>Test</h1>
<script>
console.log($('h1').text());
</script>
</body>
</html> -
Sk8erPeter
nagyúr
Azért azt nem árt kihangsúlyozni, hogy lokálisan nem működik...
De nem is így szokás tesztelni fejlesztéskor, úgyhogy nem hiszem, hogy ez releváns kellene, hogy legyen (egy helyi webszervert feltenni pár kattintás, akár IIS-ről, akár Apache-ról van szó).
A második megoldás is JÓ, sőt, akár jobb is lehet! Annyiban egyszerűsít a dolgokon, hogy az aktuálisan használt protokollt fogja használni a betöltött URL-eknél is, akár pl. http-ről, akár https-ről van szó, nem kell bedrótoznod a használt protokollt! (Létezik olyan oldal, ami elérhető http-n és https-en is. Ezzel a módszerrel nem kell kutyulni a használt protokollokat.)Persze nem meglepő módon van szócikk erről is stackoverflow.com-on:
http://stackoverflow.com/questions/9646407/two-forward-slashes-in-a-url-src-href-attributeSk8erPeter
-
Jim-Y
veterán
válasz Sk8erPeter #4379 üzenetére
Igazad van ez igy tenyleg jobb magyarazat
-
PumpkinSeed
addikt
válasz Sk8erPeter #4379 üzenetére
Azért lokálisan tesztelek webszerver nélkül, mert órai feladatra készül és ott nem szabad olyan kódot alkotni ami webszerver nélkül nem működik, ezért az osztályozás is webszerver nélküli teszt alapján megy, így én is anélkül tesztelek.
"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
-
Zedz
addikt
válasz PumpkinSeed #4381 üzenetére
Irigyellek egy kicsit, nálunk tilos volt bármit is használni, csak a natív JS kapott osztályzatott.
-
martonx
veterán
1. a preventDefault-ot teljsen rosszul használod. Csak 1 kell belőle, és az legfelülre.
2. nem lehetne jsfiddle-re, hogy esetleg ki is javítsuk? Bár nekem bőven jó az az 1-es pont hintje alapján kijavítod magadA kódod alapján adódik a kérdés, hogy tudod-e, mit csinál a preventDefault? Ha a válaszod igen lenne erre, akkor kérlek először olvass utána, hogy mit csinál, és értsd is meg, hogy mit csinál.
Én kérek elnézést!
-
cSuwwi
aktív tag
Optimalizálás témakörbe: külső js fileokat head-be, vagy body vége elé?
Jómagam csak az oldalak végére pakolom (elvileg ide illene, illetve már megszokásból, inline js-t kerülöm, csak diszkrét js van az oldalaimban)
Viszont a "csoda" seo-sunk szerint előre kellene, és az analytics mérőkódot is.
Az átlag magyar siteokat elnézve a fejlesztőbrigádtól függ éppen hova kerül. Van valami előnye a headbe tenni?Illetve az async/defer gyakorlatban is beválik? Gyorsabb lesz a betöltődés?
Itt ahogy látom az async-nál párhuzamosan letölti és le is futtatja (addig áll az oldal renderelés), defernél is hasonló, csak a sorrend is számít. [link]
Eddig remekül megvoltam ezek nélkül is, kérdés hogy gyakorlati haszna van-e (bizonyára), használja valaki? -
martonx
veterán
Van pár ökölszabály:
1. scripteket mindig a body végére tesszük. Ez alól a ga script az egyetlen (általam ismert) kivétel, noha ez is simán megy az oldal alján is, de a gugli azt javasolja, hogy a mérések pontossága érdekében inkább menjen a head-be. A ga script egyébként csak egy async loader, szóval szerencsére csak minimálisat fog az oldalad betöltődésén lassítani.
2. ne foglalkozz az async - defer attribútumokkal. Ha ezekre vagy szorulva, akkor az azt jelenti, hogy valamit elég rendesen elbaltáztál. No de miért? Mert egy rendesen optimalizált oldalon egy szál minifikált bundle-özött js található (na jó az egy szál, az bizonyos esetekben, mikro optimalizációknál lehet akár 2-3 is), ergo ezekre az attribútumokra nincs is érdemben szükség.
3. ha már optimalizálás, akkor cdn-ről használod azt az egy szál minifikált, bundle-özött js-edet? Sőt menjünk tovább, minden statikus tartalmat (css - ami ugye szintén bundle-özött, minifikált, képek - amik ugye lehetőség szerint sprite-okban vannak). A cdn-ben be van állítva a gzip, illetve valami jó nagy expiary date? A cdn már csak azért is fontos, mert a böngésző azonos domain-ról sorrendben szedi le / várja be a kért cuccok letöltődését. Ellenben ha valamit másik domain-re teszel ki, pl. cdn-re, akkor annak a letöltése, feldolgozása hirtelen párhuzamossá válik.
4. ha már kismillió js file-od van, akkor használj valamilyen loader scriptet, amivel szabályozni tudod, hogy mikor épp melyik js töltődjön be, így minden oldal csak a számára szükséges minimális js-t fogja letölteni, használni.
5. egy oldal pagespeed-jén ritka az, amikor maga a js betöltés ront. Simán lehet, hogy a szerver oldalon van valami elcseszve (mondjuk a legtriviálisabb dolgokat is sql-ből kérdezgeti le, erre nagyon jó tipikus rossz példa a cms-ek működése), valami nincs cache-elve, szar a html struktúra, túlbonyolított a css, és ez miatt extra köröket fut a renderelés stb...Én kérek elnézést!
-
cSuwwi
aktív tag
válasz martonx #4388 üzenetére
Az analytics előrerakáson kívül nekem újdonságot szerencsére nem mondtál.
Async/defert nem használok, csak érdekelt hogy van-e létjogosultsága egy átlagos sitenál.
Minify, image sprite alap. Ahol megoldható külön aldomainről mennek a static dolgok, de ez egy pofon a szarnak, mert a cookiekat ugyanúgy elküldi neki. Ideális esetben lenne egy cookieless domain staticnak.
Átlag 2 js-t használok, egy framework.js-t (benne a külsős cuccok, jQ vagy ami éppen kell), illetve egy js amiben a saját cuccok vannak.Szerveren gzip, normális expire time van, js/css-nél ?v=dátum paraméter is van, hogy változás esetén frissüljön.
-
Sk8erPeter
nagyúr
válasz martonx #4391 üzenetére
Pedig annyiból nem mondott hülyeséget, hogy valóban megakadályozhatja egy form elküldését, ha mondjuk a submit buttonre (buttonökre) van kötve az event handler, és hív egy event.preventDefault()-ot; ugyanígy a linkre is igaz. Mondjuk annyiból nem volt pontos a meghatározása, hogy a metódushívás inkább az eventet érvényteleníti/törli, DE az esemény további felszivárgását nem akadályozza meg. Szóval tulajdonképpen az alapértelmezett viselkedést lehet vele módosítani, úgyhogy nagyon nem lőtt mellé. Vagy csak most hirtelen nekem nem ugrik be, mire gondoltál.
(#4372) Zedz :
Szívesen ránéztem volna, de törölted a kódodat pastebinről, úgy meg nehéz.(#4381) PumpkinSeed :
"Azért lokálisan tesztelek webszerver nélkül, mert órai feladatra készül és ott nem szabad olyan kódot alkotni ami webszerver nélkül nem működik"
Jézusom, milyen degenerált módszer. Ahelyett, hogy ahhoz szoktatnának, amit az ember élesben és a gyakorlatban használ... Azért ha webfejlesztésről van szó, talán nem a lokális, webszerver nélküli tesztelést kellene erőltetni. Kíváncsi lennék, mégis mi az oka, hogy így találták ki a házit nektek...
Amúgy tényleg elkeserítő, hogy csomó visszajelzés alapján azt hallani, hogy ezek a tanfolyamok vagy elavultak, vagy valami kicsavart gondolkodás mentén elcseszik az oktatás módját.(#4388) martonx :
"Simán lehet, hogy a szerver oldalon van valami elcseszve (mondjuk a legtriviálisabb dolgokat is sql-ből kérdezgeti le, erre nagyon jó tipikus rossz példa a cms-ek működése), [...]"
Mondjuk a CMS-nél is egy normális fejlesztő JavaScript-fájlokat szerkesztget, nem inline kódokat tol fel az adatbázisba, úgyhogy szerintem ez rossz példa, mert a fejlesztői gányolásokért nem a CMS a hibás. (Bár való igaz, hogy sokszor lehetőséget is ad rá.)
Félreértés ne essék, tény, hogy a CMS sok mindent tölt be adatbázisból, ahogy ezt sok topicban átrágtuk, de a CMS-eknél van JS-fájlok betöltéséért felelős metódus, vagy épp a modul valamely fájljában is lehet deklarálni, hogy mely JS-fájlokra lesz valószínűleg szükség.[ Szerkesztve ]
Sk8erPeter
-
martonx
veterán
válasz Sk8erPeter #4392 üzenetére
"Pedig annyiból nem mondott hülyeséget, hogy valóban megakadályozhatja egy form elküldését, ha mondjuk a submit buttonre (buttonökre) van kötve az event handler, és hív egy event.preventDefault()-ot; ugyanígy a linkre is igaz. Mondjuk annyiból nem volt pontos a meghatározása, hogy a metódushívás inkább az eventet érvényteleníti/törli, DE az esemény további felszivárgását nem akadályozza meg. Szóval tulajdonképpen az alapértelmezett viselkedést lehet vele módosítani, úgyhogy nagyon nem lőtt mellé. Vagy csak most hirtelen nekem nem ugrik be, mire gondoltál."
Egyrészt igazad van, mert amit mondott önmagában annyira nem volt hülyeség, de nem is mondtam, hogy hülyeség. Viszont ha ehhez megnézed az adott példa kódját (hopsz most olvastam tovább a hsz-ed, és látom, hogy időközben törölte a kódot), akkor meg láthatod, hogy gyakorlatilag fingja sincs, hogy mit csinál, és mi a különbség az event.preventDefault és egy szimpla return között. Ergo fogalma sincs mit csinál, mire jó, még ha lexikálisan nézve nagyjából ismeri is a preventDefault meghatározását.
A CMS-es megjegyzésemet félreértetted. Arra gondoltam, hogy a CMS kismillió dolgot kérdez le a DB-ből, ahhoz, hogy egy hello world oldalt kigeneráljon. Ez esetében szükséges működés, de nyilván teljesítmény optimalizáláls szempontjából rossz működés. Mondhatni szükséges rossz. De ezt már százszor kitárgyaltuk.
Én kérek elnézést!
-
Sk8erPeter
nagyúr
válasz martonx #4393 üzenetére
Hmm, hát nem tudom sajnos, mi volt az eredeti kódban, így nem tudom, mit csinált rosszul, de mondjuk így segíteni is nehéz az illetőnek, hogy törölte.
Ja, a CMS-es mondatod akkor valóban félreérthető volt, azt hittem, arra gondolsz, amikor egy magát fejlesztőnek tartó valaki behányja inline módon az adatbázisba a kódokat, azt meg ki kell túrni, berakni a HTML-kimenetbe, script-tagek közé, természetesen az inline-sága miatt ez(ek) a kódrészlet(ek) nem is cache-elhető(ek), így a betöltést értelemszerűen lassítja, mivel a böngésző gyorsítótárazását sem tudja kihasználni. Lett volna alapja egyébként, ha erre gondolsz, sajnos láttam már pár ilyen módon megírt, hányadék modult. Miközben persze már a modul írásakor is régen voltak olyan módszerek, amikkel tisztességesen be lehet tölteni a kódokat modulárisan, de fájlokból... Az az ilyen "nekiesek, hadd szóljon" típusú fejlesztő. (Aki nem hajlandó eltölteni plusz egy órát a dokumentáció/hasznos tutorialok olvasgatásával, mert haladni akar, cserébe csinál egy kupac szart.)
Sk8erPeter
-
martonx
veterán
válasz Sk8erPeter #4394 üzenetére
Ez egyre inkább off topik, de per pillanat is tudok mutatni olyan főállásban PHP fejlesztőt, aki pont olyan szarul írja a PHP kódját mindenféle framework, meg CMS nélkül is, mint ahogy írtad
Szóval igen, erre is gondoltam, csak úgy voltam vele, hogy ezt így hosszadalmasabb levezetni, mint példának felhozni a CMS-t, ahol ez szükségképpen eleve így van.Az eredeti kódban meg olyanok voltak, hogy itt - ott, egy - egy if ág végén, ahol nyilván return akart volna lenni, mert teljesen egyértelmű volt, hogy a cél akkor az adott funkcióból kilépés lett volna, event.preventDefault-ok álltak pl. xy string hosszának ellenőrzésekor, azaz amikor validációs hiba történt
Akkor direkt nem akartam ezen élvezkedni, de addig provokáltál...Finoman, némi hint-tel megszórva próbáltam a kollégát rávenni, hogy szánja már rá azt a 10 percet némi javascript doksi olvasására. Mivel időközben levette pastebin-ről, így gondolom sikerült is a rávezetés. Kár, hogy nem tudtad te is megnézni, biztosan okozott volna neked is pár vidám / sírva röhögős / fej falba verős percet.
Én kérek elnézést!
-
Sk8erPeter
nagyúr
válasz martonx #4395 üzenetére
"Szóval igen, erre is gondoltam, csak úgy voltam vele, hogy ezt így hosszadalmasabb levezetni, mint példának felhozni a CMS-t, ahol ez szükségképpen eleve így van."
Tudod, hogy szeretek korrigálgatni bizonyos mondatokat CMS-témában (amik félrevezetőek lehetnek annak, aki csak (rossz) hírből hallott a CMS-ekről), még akkor is, ha tudom, hogy teljesítmény terén tényleg sokszor nagyon gyatra tud lenni. A korrekciók oka nálam igazából csak az, hogy míg aktívan CMS-eztem, akkor rá kellett jönnöm, hogy mivel a CMS-ek népszerűek, nagy közösség áll mögöttük, meg relatíve egyszerű is elindulni az úton velük (aztán bizonyos esetekben annál nehezebb tovább is haladni), ezért a nagy merítésből sok is a kókler, van jópár modul, amit sokan használnak, mégis rettentő szarul vannak megírva, erőforrás-pazarlóak, a lehető legrosszabb teljesítményt nyújtó adatbázis-kezelési technikákat alkalmazzák (a "kedvencem": a PHP-vel szerializált óriásadathalom egyben történő beerőltetése egy darab mezőbe, a széjjelrobbbantandó stringek beerőltetése egy darab mezőbe (kettősponttal, pipe-pal, pontosvesszővel, tökömtudjamivel "elválasztott" retkek)), így a CMS alapvető működéséből (ti. hogy épp a rugalmasság biztosítása érdekében lényegében a legtöbb dolgot adatbázisban tároljuk, illetve onnan kérjük le; moduláris felépítésből következő bizonyos redundáns kódrészletek, stb.) következő teljesítményromlást még jóval tovább rontják bizonyos emberkék, így nagy általánosságban nem túl jó a CMS-ek renoméja. (Hozzáteszem, pl. a Drupal OOP-vel kevert procedurális kódja sem túl nyerő, bár sztem talán a PHP-s legnépszerűbbek közül még ez a legrugalmasabb CMS.)
Pedig sokszor a CMS maga az API-ján keresztül jóval igényesebb módszereket is kínálna, mint ahogy azt sok fejlesztő kihasználja. És ez gáz. A korábbi, JS-kódokat az adatbázisba benyomorító példám is erre vonatkozott: lehet ezt csinálni tisztességesen is, úgy, hogy szépen egy fájlt szerkeszt a fejlesztő, ahogy illik, a CMS egyetlen dolga pedig csupán ezt a fájlelérési utat betenni a script tag src-attribútumába, majd a kliensoldali kódot a moduláris kódszervezési minta alapján betölteni, meg lehet csinálni gusztustalanul is, hogy a PHP-kódba valahol be van nyomorítva az inline JS-kód egy stringként.
Szóval nincs így szükségképp eleve a CMS-ben, ennyit akartam korrigálni ezzel a hosszas felvezetéssel, korán van még.Hát így a kód nem hangzik rosszul, bár maradhatott volna a kolléga, hogy vele tudjuk megbeszélni a dolgot, ha már tanulni akar belőle.
(#4370) Jim-Y :
A Crockford-idézetre:
"This feature was added for people who were beginners, so if you want to look like a beginner, then leave the semicolons out."
Hmm, hát igen, de sosem értettem, hogy miért kell egy nyelvet eleve úgy megalkotni, hogy az amatőrök is felszabadultan tákolhassanak, miért nem kötelező az utasítás végén eleve a pontosvessző? Ha valamit a fejlesztő szarul csinál, rá kell vágni a kezére, ez a toleránsnak tűnni akaró szemlélet elég káros lehet.(#4371) :
Ez a Smarty projekt alapvetően jó ötletnek tűnik, de tényleg kéne pár ember, aki ezt update-elgeti, nehogy elhaljon a dolog.
Megcsillagoztam GitHubon a repót.[ Szerkesztve ]
Sk8erPeter
-
Jim-Y
veterán
válasz Sk8erPeter #4397 üzenetére
Hat, elotted a lehetoseg, tudom, hogy neked is vannak olyan kodjaid/eseteid amik megernenek egy fuggvenyt
En folyamatosan bovitgetem, de ugye ez lassan megy, mivel egyedul csinalom. Ellenben biztos vagyok benne, hogy hasznos dolog (legalabbis nekem).
Pl ma is
[link]
function easyToUseBadLogicalAND(arr) {
return arr && arr.length;
}Az egesz abbol indult ki, hogy review-oltam, es volt egy ilyen a kodban (egyszerusitve persze szv pl a valtozok miatt ne szoljatok be )
var y = x && x.length ? true : false;
Ami nyilvanvaloan egy antipattern, lenne, de megsem az. Akkor lenne igazan antipattern, ha
var y = x && x.length > 0 ? true : false;
De mivel az && nem biztos, hogy mindenki szamara egyertelmuen mukodik, ezert megert egy kis kodot szerintem
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Szerintem bad practice-eket megosztani Smarty.js néven nem túl jó ötlet... Akkor már írd oda, hogy mit NE, és mit IGEN. Ne csak a NE-megoldás legyen ott...
Nem beszélve arról, hogy már csak azért is rossz a kód, mert nincs típusellenőrzés sem, nem biztos, hogy az átadott változónak (ami nem biztos, hogy típushelyes) létezik egyáltalán .length property-je.Sk8erPeter
-
norby10
csendes tag
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Peugeot, Citroën topik
- The First Descendant - Kizárólag PC-n lesz játszható a következő teszt
- Rendkívül ütőképesnek tűnik az újragondolt Apple tv
- Kertészet, mezőgazdaság topik
- Kerékpárosok, bringások ide!
- Fejhallgató erősítő és DAC topik
- MIUI / HyperOS topik
- Motoros topic
- Trollok komolyan
- Vodafone mobilszolgáltatások
- További aktív témák...