Hirdetés
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Jövő hónapban érkezik Apple eszközökre az Assassin's Creed: Mirage
gp Az előzetes információk szerint a játék első 90 perce ingyen elérhető lesz bárki számára, a teljes verzióért természetesen fizetni kell.
-
A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
it Egy felmérés szerint a legtöbb amerikai osztja azon véleményt, hogy a TikTok egy őket befolyásoló eszköz.
Új hozzászólás Aktív témák
-
honda 1993
senior tag
válasz tothjozsi96 #16048 üzenetére
Nem tudom hogy mi fog kelleni xd
Ezért kérdeztem.Majd holnap megnézem hogy vannak e tutorial videok a YOUTUBE-on.
[ Szerkesztve ]
XD alias IKSZDé
-
DNReNTi
őstag
válasz tothjozsi96 #16064 üzenetére
Nem jól gondolod. Nem is tudom, ezt most hogy hoztad össze, már a kérdést. A nullával való osztásról beszélünk. Arról, hogy nullával osztás eredménye nem nulla, hanem nem értelmezett, figyelmeztetéshez vezet a program futása során, és hamis eredményt (nem nullát) hoz. Ezt pedig kezelni kell. Emlékeztetőül: innen indultunk.
but without you, my life is incomplete, my days are absolutely gray
-
DS39
nagyúr
válasz tothjozsi96 #16066 üzenetére
a scriptjében nincs email formátum ellenőrzés, vagy mire gondoltál?
-
DS39
nagyúr
válasz tothjozsi96 #16068 üzenetére
ok, így már világos.
-
DNReNTi
őstag
válasz tothjozsi96 #16068 üzenetére
Ja bocsi, nem néztem mire ment a választ.
Egyébként akkor is hülyeség, de erre rájöttél.(#16072) PumpkinSeed
Igaz, de nem egy kezdőnek, hanem neked írtam.but without you, my life is incomplete, my days are absolutely gray
-
DNReNTi
őstag
válasz tothjozsi96 #16180 üzenetére
Lassan 5 éves a könyv. Éb bele se kezdenék.
but without you, my life is incomplete, my days are absolutely gray
-
DNReNTi
őstag
válasz tothjozsi96 #16182 üzenetére
Ez a könyv kérdés szerintem mindig szubjektív, eleve attól is függ most milyen szinten állsz, mit szeretnél megtanulni. Az hogy én nem kezdenék bele, nem azt jelenti, hogy tele van hülyeséggel a könyv. A könyvekből szerintem maximum gondolkodásmódot lehet elsajátítani, nincs olyan, hogy jó tananyag, mert minden egyes program más. Webalkalmazásokra ez pedig fokozottan igaz. Programozásban egyetlen jó tanulási módszer van: a gyakorlás. Természetesen kell egyfajta látásmód, egy bizonyos nyitottság és az alapok, valamit programtervezési minták ismerete. De egyetlen könyvtől se várd el, hogy miután elolvastad a 400 oldalt, te, vagy bárki megír egy e-bank felületet. Menj el a boltba, lapozz bele, ha úgy látod tudsz tanulni belőle, mond számodra új dolgokat, akkor megéri, és számodra jó könyv.
De hogy a kérdésre válaszoljak: Nem, nem tudok könyvet ajánlani, őszintén szólva, programozás témában még egyet nem olvastam el.
but without you, my life is incomplete, my days are absolutely gray
-
válasz tothjozsi96 #16206 üzenetére
Tömbök tömbjét tárolod mondjuk (a set() második paramétere)? Annyit kell csak tenned, hogy a túl régi üzeneteket mindig takarítsd ki előtte.
-
válasz tothjozsi96 #16208 üzenetére
Mutass kódot.
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16211 üzenetére
Már szó volt a tömbök tömbjéről, és ehhez értelemszerűen két egymásba ágyazott foreach-ciklusra lesz szükséged, hogy normálisan elérd a tömbben tárolt tömb kulcsait/értékeit. Már ha jól értem, mit szeretnél, hogy először csak mindent jól ki akarsz íratni, és annyi; bár lehet, hogy félreértelek, jó lenne tudni, nálad mit jelent az, hogy $value... (Na, látod, ez a hátránya az ilyen fos változóneveknek. ) Egyébként hogy értelmesen lásd, mit tartalmaz egy tömb, csak egy gyorsteszt erejéig debuggolhatnál, vagy írasd ki az értékét var_export()-tal, print_r()-rel, var_dump()-pal, stb... (Nyilván aztán amint megtudtad, mi van benne, ezeket a sorokat selejtezd ki, amúgy is illik inkább normálisan debuggolni a kódot, nem kiíratni minden hülyeséget.)
De lehetőleg felejtsd el az ilyen változóneveket, mint az $array, meg $value, mert ezek a nevek semmit nem mondanak a változók tartalmáról, így ha ránézel a kódra, mindig előbb el kell gondolkodni rajta, az mit is tartalmaz pontosan. Nem kell félni a hosszú, beszédes változónevektől, SŐT."Elég sokat terhel az SQL fal, és így szinte 0% load. "
Hát ha minden a memóriában tárolódik, és onnan is kell kiolvasni, akkor nem csoda, mivel semmiféle adatbázis-kapcsolódási, oda való feltöltési (lockolási, stb.) overhead nincs a dologban. Viszont ahogy Athlon64+ említette, épp emiatt ne felejtsd el a túl régieket törölni, különben szép kis memóriahasználatod lesz.(#16205) kemkriszt98 :
Akkor fasza, ha megoldódott, viszont az echo után használj már szóközt, háthogynézezmárkianélkül.[ Szerkesztve ]
Sk8erPeter
-
DNReNTi
őstag
válasz tothjozsi96 #16214 üzenetére
Van valami különösebb oka annak, hogy adatbázis helyett ezt a megoldást választottad?
but without you, my life is incomplete, my days are absolutely gray
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16214 üzenetére
Ennek itt mi értelme van? Ha már tényleges felhasználás a cél, akkor miért nem egyértelműen használod fel a kulcsokat, miért általánosan akarsz végigmenni a tömbön? A másik, hogy remélem, ez a tömb csak példa, és nem úgy néz ki a gyakorlatban, hogy összekutyulva asszociatív tömb és numerikus kulcssal ellátott tömb egyben. Akkor már miért nincs az 5-nek, meg a "mégvalami"-nek is valami normális indexe? Ha tényleg nincs, hát akkor adjál nekik (nem egy CMS által generált kódot használsz, ahol néha ilyen ocsmány kutyult tömböket használnak, hanem te írod az egész kódot), ha van, akkor meg aszerint használd a kulcsokat, ne általánosan akarj végigmenni foreach-ciklussal. Legalábbis az elég furcsa, ha az a valódi felhasználás, hogy igazából nem is tudod egyértelműen már a kódból, hogy mi is van a tömbben.
Egyébként már írták neked, hogy használd tömbök tömbjét, miért nem teszed? Most nem is tudom, hogy működik a megoldásod (vagy ez csak példakód?). Sőt, ami szebb lenne, miért nem használod inkább objektumok tömbjét?
A tömbök tömbje mondjuk ilyen lehetne:
$conversations = array(
array("id" => 5, "text" => "asdasdasd"),
array("id" => 6, "text" => "blabla"),
);
de ez finoman szólva nem valami szép, inkább objektumok tömbje kéne. Szóval definiálnál egy osztályt, amiben értelmesen tárolhatnád az adatokat, lenne több attribútuma, aztán példányosítanád. Ezerszer nagyobb rugalmasságot kapnál cserébe.(#16213) : Nem "ágyazott" foreach-ciklus, hanem EGYMÁSBA ágyazott ciklus. Ha nem lenne egyértelmű, ez két egymásba ágyazott foreach-ciklus (és ezt a végtelenségig lehet bővíteni):
foreach(...) {
foreach(...) {
// ...
}
}(#16216) :
"Nyilván jquery-vel látszik csak a különbség"
Hogy mi van? Mégis mi a frász köze lenne a jQuery-nek a dolog gyorsaságához?Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16218 üzenetére
Úgy értettem, hogy nem stimmel az a mondat, hogy "Nyilván jquery-vel látszik csak a különbség", mert nincs köze a jQuery-nek ahhoz, hogy miért gyors a dolog. Azért gyors, mert a memóriában tárolsz, onnan olvasol, és nincs ott az adatbázis-kezelési overhead. Plain JavaScripttel, meg teljesen más megközelítéssel is meg lehetne írni az egészet, a lényeg a gyorsaságban jelen esetben a szerveroldal (mert az a szűk keresztmetszet, a kliensoldali kód nyilván gyors, hacsak nem egy szutyok).
Jé, most lettem PH! félisten, atyaúristen.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16221 üzenetére
Ő, de miért nem magát a $conversations tömböt tárolod, úgy, ahogy van?
http://php.net/manual/en/memcache.set.php
a függvény fejléce a doksiban:
bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
Mint látható, a második paraméter "mixed", tehát nincs korlátozva, hogy milyen típust állíthatsz így be.
Próbáld ki ezt (nem tudom most tesztelni):foreach($conversations as $beszelgetes) {
echo $beszelgetes["id"] . " - " . $beszelgetes["text"] . "<br />";
}
$memcache->set("beszelgetes", $conversations, false, 99);A $conversations tömbhöz meg értelemszerűen hozzáadhatsz, illetve abból törölhetsz, aztán újból beállíthatod az előbbi módon (elvileg jónak kéne lennie).
Egyébként itt a harmadik paraméternél nem lenne jobb false helyett használni esetedben pl. a MEMCACHE_COMPRESSED vagy más konstanst?
http://stackoverflow.com/questions/2105663/what-is-compression-for-in-phps-memcache/2106096#2106096U.i.: plíz használd a Programkód gombot, miután kijelölted a kódot! Köszi!
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16223 üzenetére
Fontolóra vehetnéd a Memcache::add metódust is, így az előbbi megoldás helyett, ahol egy nagy tömbben töltöd fel a beszélgetéseket, akár egyenként is feltölthetnéd, tehát így:
foreach($conversations as $conversation) {
echo $conversation["id"] . " - " . $conversation["text"] . "<br />";
$memcache->add('beszelgetes', $conversation, MEMCACHE_COMPRESSED, 99);
}Próbát megér, még nem használtam, majd írd meg, ez mit eredményez, ha lekéred az adatokat. Így elvileg bármikor tudsz hozzáadogatni, nem írja fölül, mint a set.
(Ott van még a replace-metódus is egyébként, ha majd az kéne, de ezt próbáld meg előbb.)Egyébként fontolóra vehetnéd valamilyen NoSQL-megoldás használatát is (mint pl. a mongoDB), az ilyen feladatokra szintén nagyon hatékony tud lenni (lásd Facebook).
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16225 üzenetére
Jó, hát most nem tudom tesztelni, akkor használd a replace-t, úgy, hogy a módosított tömböt rakod a helyére, és kész, első megközelítésként jó lesz, aztán szépíted, ha lehet. Direkt azért linkeltem az előbb, ne csak a hsz. felét olvasd el.
(#16226) : Ez a kód most remélem csak egy rossz vicc volt!
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16228 üzenetére
Én értelek, csak te nem értesz. Miért nem kéred le felülírás ELŐTT az előző értéket, fűzöd hozzá ehhez a tömbhöz az új értékeket, és replace-eled EZUTÁN a korábbi tömböt? Első körben.
Vagy most az a baj, hogy ha csatlakozik egy másik kliens, akkor annál még nincs beállítva ez az érték, vagy mi?[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16231 üzenetére
De már megint mi a frász ez a kód?
Miért raksz egy foreach-ciklust a tömb-definiálásba?Csak hogy konkretizáljuk, én így értettem, hogy merge-ölöd a tömböt (tehát összefűzöd) a korábbi értékekkel, először lekérve a korábbi értéket, majd replace-elve (persze ellenőrizd először, hogy van-e már feltöltve egyáltalán ilyen érték!):
// korábbi értékek
// http://hu1.php.net/manual/en/memcache.get.php
// eszerint a get-nek array-t kell megadni, ha array-t vársz
$conversations_before = $memcache->get(array('uzenofal'));
// új értékek
$conversations_current = array(
array('id'=>1, 'text'=>'qwe'),
array('id'=>1, 'text'=>'ret'),
);
// ellenőrzöd, hogy van-e egyáltalán már ilyen érték feltöltve, mert csak akkor lehet replace-elni ezzel a kulccsal később!
// összefűzöd a két tömböt
$conversations = ($conversations_before !== FALSE) ? array_merge($conversations_before, $conversations_current) : $conversations_current;
// replace, ha van már ilyen kulcs, set, ha nincs még
if($conversations_before !== FALSE) {
$memcache->replace('uzenofal', $conversations, MEMCACHE_COMPRESSED, 999);
}
else {
$memcache->set('uzenofal', $conversations, MEMCACHE_COMPRESSED, 999);
}Persze ezt most csak kézzel írtam, nem teszteltem, de a gondolatmenet remélem átjött.
Szóval vág?[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16233 üzenetére
Ez egy brutálisan egymásba ágyazott tömb (nem "dupla tömb", hanem sokszorosan egymásba ágyazott darab, az "uzenofal" kulccsal ellátott tömbbe beírtál egy másik "uzenofal" kulccsal ellátott tömböt, és abba egy továbbit, stb...), amiből egyértelműen következik, hogy rosszul történik a beírás. Ergo nem igaz az, hogy "szépen beírja", mert rossz.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16235 üzenetére
"Mellesleg felesleges a replace mert mindennek van külön ID-je és ahogy mondtam ez üzenőfal ..."
Ez hogy jön ide, hogy mindennek van külön id-je? Sehogy: eddig az volt a problémád, hogy a korábbi értékek egyszerűen törlődnek, mert szimplán felülírtad őket a Memcache::set metódussal. Arra kellett a replace, hogy a korábbi és az új értékek egyesítéséből keletkező tömbbel helyettesítsd a régebben feltöltött tömböt.
Így meg tudod tartani a régebbi és az új értékeket is. (Persze itt majd figyelj a memóriahasználatra, erre írtuk, hogy a túl régieket törölni kéne a memóriából, előtte esetleg beírva adatbázisba, ha meg akarod tartani hosszú távon, hogy visszakereshető legyen később.)[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16238 üzenetére
Szívesen, de akkor másold már be légyszi azt a kódot (legalább egy körülbelülit), ami működik, ha már ennyit szenvedtünk vele... (Nekem most nincs kedvem agyalni a témán, de a megoldás érdekelne.)
(#16237) : Ja, nyilván nem jó, mert ötezerszer szerepel benne az "uzenofal" kulcs...
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16240 üzenetére
Tehát akkor mégis működik a kódom, amit mutattam? Ahogy elnézem, csak annyi különbség van, hogy a get-metódusnál nem array-t használsz, és hogyha ez így működőképes, az számomra arra utal, hogy hibás/hiányos a hivatalos dokumentáció:
http://hu1.php.net/manual/en/memcache.get.php
itt ezeket a fejléceket írja:
string Memcache::get ( string $key [, int &$flags ] )
array Memcache::get ( array $keys [, array &$flags ] )
Magyarul ezek szerint ha string kulcsot adsz meg, akkor stringet is kapsz vissza; de Te a kódod szerint tömböt kaptál vissza. Akkor itt a hivatalos doksiban kéne lennie még legalább egy mixed Memcache::get ( string $key [, int &$flags ] ) sornak is... Ez így logikus is lenne, hiszen a set-metódussal is mixed állítható be, így lekérésnél is nyilván mixed lehetne. Na, ezt is megtudtuk.DE:
- jól érzed, ez az 'id' => rand(1,999999999) sor teljesen rossz. Mi van, ha a rand() eredményeként éppen olyan azonosító jön ki, ami már létezik? Sehol nem ellenőrzöd. De amúgy sem szokás sehol így generálni az azonosítót. Ja, és az azonosító nem feltétlenül kell, hogy szám legyen (lásd uniqid()), vagy ha mégis az kell, akkor oldd meg, hogy inkrementálva legyen, de akkor meg figyelni kell arra is, hogy ha több kliens is csatlakozik, akkor atomikusan történjen az inkrementálás, ne tudjanak korábbi/"kettő közötti" állapotot kiolvasni. Cél egyáltalán ezt feltölteni majd valami adatbázisba, hogy meglegyenek a régi adatok? Mert ha nem, szerintem simán használhatnád a uniqid() függvényt, és meg is vagy. Ha adatbázisba feltöltöd, ott max. akkor problémás, ha az id-hez egy automatikusan inkrementálódó int van beállítva; az nyilván nem fogadja el az angol ábécé karaktereit.
Az inkrementálós megoldáshoz nem ártana valami lockolás, hogy egyszerre csak egy kliens tudja módosítani az értéket, de simán megtehetnéd azt, hogy egyszerűen a set/replace-szel egy MÁSIK kulcsot állítasz be, ami ezt a számot tárolja, azt lekéred, megnöveled, stb.
- minek kéred le a replace/set után még egyszer az adatokat a get-metódussal? Hiszen már ott van a $conversations-tömbödben. Mondjuk annyiból jó lehet, hogy ha közben más kliens módosította az adatokat, akkor azt is megkapod...
- erre a feladatra szerintem tényleg jobb lenne valami NoSQL-megoldás, amiről korábban írtam."Amúgy ez a compress asszem valami tömörítés a memcache-ben."
Igen (MEMCACHE_COMPRESSED), de ezt szerintem hagyd ott szépen, ahogy mutattam, lásd:
http://stackoverflow.com/questions/2105663/what-is-compression-for-in-phps-memcache/2106096#2106096[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16242 üzenetére
Szívesen!
Jó a felvetés, legegyszerűbb (még ha nem is szép) megoldás jelen esetben az lenne, ha maga az azonosító lenne a tömbindex, és annak értéke pedig az adatokat tartalmazó tömb lenne. Ez továbbra is tömbök tömbje, ahogy a korábbi megoldás is volt, csak annyi különbséggel, hogy itt explicite meghatározod a tömbindexet, nem pedig az automatikus számozásra bízod (mivel eddig numerikus indexek voltak használva, 0, 1, 2, ...).
Tehát valahogy így, pszeudokóddal:$conversations = array(
AZONOSÍTÓ1 => array(
"text" => "asdasd",
),
AZONOSÍTÓ2 => array(
"text" => "blabla",
),
AZONOSÍTÓ3 => array(
"text" => "qweqwe",
),
);az AZONOSÍTÓ1, AZONOSÍTÓ2, stb. kulcs lehet szám, vagy lehet egy string is (attól függően, milyen típusú azonosítót használsz).
Akár redundánsan is tárolhatod az azonosítót, úgy, hogy pl.:AZONOSÍTÓ3 => array(
'id' => AZONOSÍTÓ3,
'text' => 'qweqwe',
),Ez bizonyos esetekben leegyszerűsítheti a dolgot, persze figyelni kell rá, hogy ez konzisztens maradjon, ne legyen egyik helyen ilyen azonosító, másik helyen amolyan.
Egyébként tényleg érdemes lehet bevezetni egy osztályt, hogy szebben tudd tárolni és kezelni az adatokat.Jelen esetben ezzel az egyszerű megoldással tehát úgy tudnád törölni, hogy egyszerűen írsz egy unset($conversations[AZONOSÍTÓ3]); sort, ezzel kitörölve az adott tömbindexet, és ezután replace-eled a korábbi tömböt a memcache-ben, és meg is vagy.
Itt is egyébként figyelni kell arra, nehogy egy másik csatlakozott kliens egy korábbi kiolvasott adatból tudjon beírni, úgy, hogy visszarakja valahogy ezt az értéket a tömbbe...
Ezért is mondom, hogy szebb megoldást továbbra is valamilyen NoSQL-megoldással lehetne készíteni.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16244 üzenetére
Fasza, ha működik.
Általános gyakorlat az, hogy a szuperglobális tömböket NEM használjuk fel közvetlenül, alaposan validáljuk előtte.
"Már csak egy utolsó dolog van vissza, nem tudom hogy limitáljam max. 40 üzenetet akarok megjeleníteni, de nem tudom hogy tudnám így a tömbök miatt."
Hát úgy, hogy a tömb utolsó 40 elemét veszed. Pl. array_slice-t használhatsz erre a célra. Egy egyszerű példa:
http://stackoverflow.com/questions/5468912/php-get-the-last-3-elements-of-an-array/5468954#5468954
Természetesen neked nem 3 kell, hanem 40.
DE arra figyelj, hogy előtte count()-tal ellenőrizd le, hogy több eleme van-e, mint 40, és ha igen, csak akkor szabdald fel, és vedd az utolsó 40 elemét.Viszont az is lehet, hogy ezt már érdemes lenne vagy a memcache-nek egy külön kulcsa alatt tárolni, vagy adatbázisba pakolni, és kitörölni a memóriából, mert ha úgysem érdekes jelen esetben, akkor minek terpeszkedjen a memóriában feleslegesen.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16246 üzenetére
Hát itt 20-at jelenítesz meg, 40-et akartál. De végül is oké. Amúgy azt hittem, csak a csatlakozott kliensnek akarsz megjeleníteni ennyit, az fura, ha pont az adminnak kevesebbet jelenítesz meg, mint amennyi van, legalább biztosíts lehetőséget a továbbiak törlésére (lapozásra) is az adminnak.
Ez az >= UC_MODERATOR kicsit fura feltétel, szerepköröknek kellene lennie, és akinek van joga törölni, csak az törölhessen, ebből még gond származhat, ha ilyen "nagyobb-egyenlő, mint valami konstans" feltételt raksz be (mi van, ha bővíted a szerepköröket, és nagyobb számot kell rendelni valami másik szerepkörnek, akinek nem kéne, hogy joga legyen a törléshez) - csak egy szerepkör legyen, aki tud törölni, ezt rendelgesd hozzá júzerekhez, és annak az egyenlőségét ellenőrizd inkább.
És ez továbbra is csak egy átmeneti megoldás, csak hogy működjön a dolog legalább, ennél azért jóval szebben is lehet, hogy ne mindig nagy tömbökkel operálj, szóval majd később ezt a megoldást azért szépítsd.
De örülök, ha sikerült működésre bírni, szívesen.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16248 üzenetére
De attól még akkor sem jó így, az előző magyarázatot továbbra is fenntartom... Úgy szokás, hogy hozzárendelsz egy-egy szerepkört a júzerekhez, ami egy tágabb fogalom, benne foglaltatik pl. az is, hogy ő törölhet, módosíthat, blabla, ő csak módosíthat, de nem törölhet, és így tovább... tehát azt érdemes ellenőrizni, hogy az adott júzernek van-e konkrétan olyan joga (nem szerepköre, mert a szerepkör tágabb fogalom, amiben több jogosultság is benne lehet), hogy töröljön. Na mindegy, ez csak egy javaslat, érdemes lehet megfontolni, hogy később ne legyenek problémáid belőle.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16250 üzenetére
Felhasználói szemszögből egyáltalán érzékelhető ez a különbség?
Egyébként egy kerülő megoldás az lehetne, hogy egyből, még feltöltés előtt cseréled ezeket a szövegeket.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16258 üzenetére
1. légyszi használd a "Válasz" linket, még a saját hozzászólásodhoz is, hogy bárhonnan követhető legyen az üzenetszál, hogy most ez melyik téma folytatása (jelen esetben kitalálható, de akkor is )
2. ez tipikusan olyan kérdés volt, amire semmi értelmeset nem lehet válaszolni Nulla konkrét részlet, hogy mi nem működik, mi a pontos hiba (kb. ilyen "nem működik, mi lehet a gond"-szintű hibajelzés), nulla konkrét kód, stb. Szóval így nem fogjuk kitalálni, mi lehet a gond nálad.(#16252) Lacces :
isset($data[$key])
--> a foreach-ciklusban ennek a feltételnek nem sok értelme van. Nyilván igaz lesz, miután ezeken a kulcsokon mész végig.[ Szerkesztve ]
Sk8erPeter
-
norby10
csendes tag
válasz tothjozsi96 #16279 üzenetére
be van az elöző postban
-
norby10
csendes tag
-
norby10
csendes tag
válasz tothjozsi96 #16281 üzenetére
de azért Köszi
-
Des1gnR
őstag
válasz tothjozsi96 #16293 üzenetére
Próbáltam, de nem változik semmi.
Dell G3 3779 || Samsung S23+ || Samsung Watch 5 Pro || Oculus Quest 2 || Creality Ender 3 V2
-
Des1gnR
őstag
válasz tothjozsi96 #16295 üzenetére
Kiírnia nem is kell semmit.
Ha a meghiv.php-m így néz ki:
<?php
include 'rendeles.php';
?>
Akkor is létrejön az XML.Dell G3 3779 || Samsung S23+ || Samsung Watch 5 Pro || Oculus Quest 2 || Creality Ender 3 V2
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16291 üzenetére
Hát ja, sajnos nem meglepő, hogy rohadt lassú, mert tele van regexpekkel, egyenként újból és újból végigkotorássza a szöveget arra a kifejezésre, amelyik esetleg illeszkedik (mármint mindegyik regexpre külön-külön), stb., plusz elég karbantarthatatlan is a kód, mert nem valami tömbszerű megoldás van, vagy bármi általánosabb, hanem az str_replace-ekhez vagy épp preg_replace-ekhez be van drótozva stringként az adott smiley - ezenkívül belerak további lassításokat, ilyenekkel, hogy előbb preg_match-csel ellenőrzi, van-e illeszkedés, és AZUTÁN preg_replace-el. Szerintem keress valami jobb kódot/library-t, rengeteg szócikk van Stack Overflow-n. Hozzáteszem, ez a smiley-cserélős móka egyáltalán nem triviális probléma, nehéz általános megoldást írni rá szerintem, ami minden esetet lefed.
(#16281) tothjozsi96 :
"Próbáld meg kivenni a strlen-t, szerintem az lesz a baja ..."
Miért lenne már az strlen a baja?(#16292) Des1gnR :
Hibajelzés be van kapcsolva?
"Viszont ha oda illesztem be ezt a kis kódot ahová kellene, akkor nem hozza létre az XML-t "
És ennyi a hibajelenség, semmi több?
Amúgy mondom, nagyon gáz ez a megoldás, hogy a rendeles.php fájlodba be van okádva minden. Rakd már egy globális függvénybe legalább, amit include-olás (/require) után meghívsz, még az is jobb.
Amúgy ha már ilyen jellegű kódbeillesztés, akkor inkább require_once()-t használj, az garantáltan csak egyszer include-olja a kódot.A kódot sem ártana legalább nagyvonalakban ismernünk... (Nem kell az egész, csak legalább valami útmutatás, hogy mi történik a fájlodban.)
(#16293) tothjozsi96 :
"Az include("rendeles.php")-t próbáltad már?"
Ugye tudod, hogy mi a különbség a require() és az include() között? Semmit nem oldana meg lecserélni a require()-t include()-ra. Annyi különbség lenne, hogy abban az esetben, ha nem létezne a fájl, nem produkálna egy fatális hibát.[ Szerkesztve ]
Sk8erPeter
-
kenwood
veterán
válasz tothjozsi96 #16291 üzenetére
jol latom,hogy a $s valtozo elnevezes valami tutorialbol van ?
erosen kerulendo kategoria.Mi kell az alaplapba? Procibol egy, Rambo 2. <> Egyetlen vizmolekulaban tobb hidrogen atom van,mint ahany csillag az egesz naprendszerben
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16315 üzenetére
Van magyarra fordított PHP-doksi is:
http://szabilinux.hu/php/function.preg-quote.htmlAz a lényeg, hogy ha a stringed tartalmazhat olyan karaktereket (mint a dollárjel ($), csillag (*), pont (.), stb.), amelyek egy reguláris kifejezésben speciális jelentéssel bíró karakterként értelmezhetők lennének, akkor előtte ezeket egy backslash-sel (\) escape-elni kell (hogy ne rontson el pl. egy egyébként jól megírt reguláris kifejezést, hogy valamilyen substringben vannak "félreértelmezhető" karakterek); pont ezt csinálja ez a függvény.
Remélem, így nagyjából érthető.(#16311) :
Nem tudok ilyen egész konkrét doksit, de Dunát lehet velük rekeszteni, én annak idején össze-vissza gugliztam mindenféle regexpekkel kapcsolatos olvasmányért, és jó sok gyakorlás után ráállt az agyam. Tényleg nem egy kétperces valami, amit csak úgy megért az ember, rá kell állítani magadat, de ez nyilván nem csak úgy megy, ha sokat olvasgatsz (nyilván az se árt), hanem ha ki is próbálgatod egyesével a különböző eseteket. Voltak különböző feladatok, amikhez nagy hasznát tudtam venni a regexpeknek, így jó gyakorlati feladatok voltak.Nagyon sokat segít egyébként a RegexBuddy (elmagyarázza a reguláris kifejezést, nagyon hasznos!), a RegExr, Regex101, RegexPal, stb.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16323 üzenetére
Ezt már korábban írtam, de az, hogy minden egyes megjelenítésnél minden egyes üzeneten végigmész, és még azonbelül is iszonyatosan sok reguláris kifejezésre keresgélsz, teljesen érthető, hogy rohadt lassúvá teszi az egészet. A reguláris kifejezés keresgélése amúgy sem egy gyors állat. Lehet egyrészt egyszerűbbé is tenni magát a reguláris kifejezést is (bár elég bonyolult egyszerűvé tenni ), meg lehet csökkenteni is a keresendő kifejezések számát (nem biztos, hogy érdemes 314 emoticon használatát lehetővé tenni), illetve lehet javítani a használt módszeren is, erről is írtam már, hogy egyből feltöltéskor alakítanád át a smiley-kat <img>-tagekké, eleve úgy mentenéd el az üzenetet, így azért jópár lépést megspórolsz, nem kell állandóan, minden megjelenítésnél újból és újból kikeresgélni ezeket. Ez utóbbira még mindig nem reagáltál, pedig már legalább harmadjára írom le. Vagy legalább akkor írd le, az miért nem jó megoldás. (Lehet olyan eset simán, csak legalább tudjam, hogy eljutott hozzád az információ. )
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz tothjozsi96 #16326 üzenetére
Mi az, hogy akkor mi van? Mi köze a kettőnek egymáshoz?
- egyrészt itt írtam már, hogy amúgy is érdemes a tisztításra valamilyen kész library-t használnod (mert most nem tisztogatod a feltöltött üzeneteket egyáltalán? Mert az ugyebár nem túl jó.)
- másrészt hogy jönnek ide a <script>-tagekben elhelyezett rondaságok, XSS ahhoz, hogy te :), :D és ehhez hasonló emoticonnak megfelelő karaktersorozatokat keresgélsz, majd átalakítod őket <img>-tagekké?
- harmadrészt amúgy is whitelist-jelleggel kellene csupán engedned bizonyos limitált tageket (vagy egyáltalán nem), aszerint szűrni (ez kapcsolódik az első ponthoz), na meg létezik strip_tags függvény is, aminek pont ilyen whitelistet megadhatsz (első, legegyszerűbb megközelítés, de mondom, a tisztításra amúgy is illene használnod valamilyen library-t (pl. HTML Purifier és hasonlók)).[ Szerkesztve ]
Sk8erPeter
-
wis
tag
válasz tothjozsi96 #16323 üzenetére
A foreach felesleges, a smiley-t a strtr is kicseréli és biztosan gyorsabb lesz mint a regex.
-
PumpkinSeed
addikt
válasz tothjozsi96 #16321 üzenetére
Viszont jobban megnéztem az URL-t amit bead. Ha egy változóban letárolnám ezt: akkor hogyan tudnám ezt normális URL-é alakítani? Van erre valami függvény, vagy nekem kellene reguláris kifejezéssel megoldani?
"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
-
PumpkinSeed
addikt
válasz tothjozsi96 #16357 üzenetére
Inaktivitás esetén igen. Szerintem a 3 nap az túl sok.
"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
-
honda 1993
senior tag
válasz tothjozsi96 #16361 üzenetére
Az a baj hogy nalami nincs olyan mint a videoban.
megnyitottam azt a dokumentumot amit mutat, aztan en is legalul keresgeltem azt a reszt amit mutatott, de nekem nincs olyan.XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16363 üzenetére
XAMPP-ot hasznalok.
De a xampp-n belul nekem csak az Apache es a MySQL fut. Csak ezeket telepitettem amikor kerdezte hogy mik kellenek. ( a haverom mondta hogy csak erre a kettore lesz szugsegem).[ Szerkesztve ]
XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16375 üzenetére
Rendben, felfogtam .
Bar sajnos annak ellenere hogy elmentettem .php-val, meg mindig az alabbi hibauzenetet kapom.Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
Error 404
localhost
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16378 üzenetére
nem az a mappa neve hogy valami, csak nem akartam leirni hogy mi a neve annak a mappanak. XD
Tehat van a htdocs mappa, azon belul van egy mappa aminek a neve "valami" ( de nem ez az igazi neve ).
[ Szerkesztve ]
XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16384 üzenetére
Bameeeg.
erre gondoltam en is hogy egyszeruen csak bemasolom,de azt gondoltam hogy nektek maga a fajl kell, es nem jo, ha csak siman bemasolom.De akkor ezzel az erovel ide is be tudom masolni . XD
[link] <--- Ez most egy gomb, nem kell bemasolni .
[ Szerkesztve ]
XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16387 üzenetére
Hat koszonom szepen,de azt en ebbol nem tudom megallapitani, hogy mettol-meddig kellene kicserelnem.
Hat, vagysi kicsereltem, de igy sem aka mukodni.
Ugy csinaltam hogy megnyitottam a fajlt a php storm-ban, toroltem az also reszt, es beillesztettem ezt.
De ugyan az a hibauzenet fogad.[ Szerkesztve ]
XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16389 üzenetére
Xampp-om van, es a vezerlopanelben leallitottam az apache-ot, aztan ujrainditottam.
[link]
Es jelenleg igy nez ki.De ha csak siman azt irom be hogy localhost, akkor pedig : It works! Tehat mukodik. ( ez nekem mar teljesen erthetetlen.)
Nincs olyan fajl.
[ Szerkesztve ]
XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16391 üzenetére
Megprobalom a reinstallt.
Szerintetek az apache es a mySQL-en kivul nem erdemes semmi mast telepiteni ?XD alias IKSZDé
-
honda 1993
senior tag
válasz tothjozsi96 #16396 üzenetére
AAA. letoltottem egy masik verziot a xampp-bol,de nem mukodik a mySQL.
Veglegesen leirtam ezt a programot es inkabb megnezem a wampservert.XD alias IKSZDé
Új hozzászólás Aktív témák
- Napelem
- Projektor topic
- iPhone topik
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Az USA nem akarja visszafogni Kína növekedését
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Skoda, VW, Audi, Seat topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Gumi és felni topik
- Android alkalmazások - szoftver kibeszélő topik
- További aktív témák...