MySQL subselect sebessége

Már egy egyszerű weboldalnál is gyakran előfordul, hogy a kapcsolódó adatokat egy subselect állítja elő, így csökkentve a lekérések számát az oldal generálásakor. Csak épp nem mindegy, hogy hogyan is csináljuk. A MySQL sebességét nagyon erősen az határozza meg, hogy hány sorral kell dolgoznia. Ezért is nagyon fontos, hogy mindig a lehető legkevesebb sorral dolgozzon az adatbázis, akkor is, ha csak egy köztes folyamatról van szó. Az alábbi 2 query ugyanazt az eredményt adja, csak épp tízezerszeres (!) sebességkülönbséggel: Olvass tovább…

13:32 - legyes

PHP 7.0 frissítése PHP 7.x -re

Meglehetősen barátságtalanul van megoldva a PHP7 frissítése, nem is értem, hogy miért kellett így megcsinálni, talán a shared hostingok és a lusta fejlesztők/megbízók miatt. A PHP7 esetén nem frissül automatikusan ha újabbat kérünk tőle, hanem telepít a régi mellé egy újabb változatot. Természetesen a konfigokat sem hozza át. Én szeretek a legújabb stabil dolgokkal foglalkozni és kerülöm azt, hogy mindegyik kódom alatt verziókezelni kelljen a dolgokat. Igen, tudom nem vagyok hatékony ezzel, nem is vagyok gazdag. Olvass tovább…

2017.12.02. 12:53 - legyes

Weboldalak asztali értesítésének kezelése és letiltása

Amikor megjelentek az asztali értesítések a Chrome böngészőben, szuper újdonságnak tűnt a dolog. Elsőként olvashatjuk kedvenc híreinket, hisz’ a böngészőnk értesít minket amint azok megjelennek. Persze gyorsan elérheti azt a szintet, amikor már túl sok értesítés érkezik. Ennek kezelése szépen el van ásva a böngészők beállításai között, ebben szeretnék segíteni kicsit.

Google Chrome

  1. Gépeljük be a címsorba a következőt (webcímként): chrome://settings/content/notifications
  2. Keressük meg az oldalt, amiről le szeretnénk iratkozni, majd a sor végén található 3 pötty ikonra kattintva szabhatjuk személyre. Amennyiben egy puzzle ikont látunk mellette, azt egy böngésző bővítmény telepítette, így a bővítményt kell eltávolítanunk

Másik lehetőség, hogy megnyitjuk a weboldalt, és a címsor elején található ikonra kattintva tiltjuk azt le:

Olvass tovább…

2017.11.13. 08:42 - legyes

Otthoni router beállítás: MTU méret, amiről senki sem beszél

Már minden lakásban van egy “router”, amivel az okoskávéfőzőnek és okoslámpának osztjuk a netet. Szerencsétlenebb esetben a szolgáltató sajátját használjuk, amiben nevetségesen gyenge processzor van, de cserébe legalább nem kell állítgatni rajta semmit, csak kihozta a szaki és netezünk. Viszont vannak hobbisták, akik ragaszkodnak a saját routerülhöz, nekik lehet hasznos az alábbi.

Bizonyára találkoztál már te is olyan jelenséggel, hogy bizonyos weblapok gyorsan töltődnek be, de vannak olyan -jellemzően külföldi – oldalak, amik kicsit olyan nyögvenyelősen. Vagy mindig szenved a YouTube/Facebook videó, de a speedtest.net azt mondja, hogy fénysebességgel hasít a net. Ismerős? Hát valószínűleg azért van, mert a routeredben nem jól van beállítva az MTU méret.

Olvass tovább…

2017.11.01. 12:16 - legyes

Windows 10 Fall Creators Update 2017 letöltése

Előfordulhat, hogy nem akar a Windows Update-en keresztül érkezni a címben szereplő frissítés. Ebben az esetben innen szerezhető be: https://www.microsoft.com/en-us/software-download/windows10 az “Update Now” gombra kattintva. Nem árt előtte egy mentést készíteni a teljes rendszerről, főleg márkás gépek esetén, mert egyre több jelentés érkezik “kék halálról” az olyan gépeken, ahogy a gép gyártójának/összeszerelőjének módosított  driverei futnak.

2017.10.23. 12:01 - legyes

Rendkívül lassú a PHP-MySQL (localhoston) Windows alatt

Én nem vagyok rajongója annak, hogy Windows alatt futtassunk PHP-MySQL kombinációt. Hisz’ eleve sokkal több erőforrást adunk oda az operációs rendszernek, mint Linux alatt. Nincs meg a fájlrendszerrel való finomhangolás lehetősége sem, valamint az IIS és én sohasem leszünk barátok. Egy projekt alkalmával arra lettem figyelmes, hogy ugyanaz a kód fényévekkel gyorsabban fut Linux alatt, mint Windows alatt, egy egyszerűen semmi logikus magyarázat nem volt rá. Nos a problémát a Windows és a MySQL DNS feloldási anomáliája okozza, de az IPv6 is bekavarhat. Szal’ a PHP-ben a MySQL szerver címénél cseréljük ki a “localhost”-ot, “127.0.0.1”-re, valamint ha nincs rá szükségünk, akkor kapcsoljuk ki a hálózati kártyán az IPv6-ot. A DNS névfeloldás tiltása a my.cnf -ben sajnos nem segít.

Előtte (cache tiltva):

Utána (cache tiltva):

2017.09.28. 14:09 - legyes

Több sor és oszlop egy cellaként MySQL és MariaDB-ben: JSON függvények és a GROUP_CONCAT() együtt

A fejlesztők 2 fajtája nem foglalkozik az adatbázis lekérdezések sebességével több kapcsolódó adatnál: a kezdők és a profik.

A kezdők lekérdezik az alap adatokat, majd egy foreach()-en belül futatják le a kapcsolódó adatok lekérdezését:

foreach ( $products as $product ) {
   $db->query( "SELECT id, thumbnail, url FROM product_images WHERE product_id = :product_id" );
}

A profik is ez csinálják, csak sokkal csillibb kivitelben. Először csinálnak egy Image class-t. Majd egy getAllByProduct( int $product_id ) metódust hozzá. A termék lekérdezésénél pedig vagy a Product konstruktorába teszik – amit a FETCH_CLASS -al használnak ki -, vagy a Product::get( int $product_id ) -be, egy ciklusban. Ami megint ugyanaz csak pepitában.   Olvass tovább…

2017.08.28. 02:22 - legyes

Windows CE eszköz csatlakoztatása Windows 10-et futtató számítógéphez

A Windows 10-ben sajnos megszűnt a Windows CE támogatás, de egy kis registry hackeléssel még engedélyezhető a dolog. Ehhez telepítve kell lennie a Windows Vistahoz elérhető Windows Mobile Eszközközpont 6.1-es szoftvernek ( https://www.microsoft.com/hu-HU/download/details.aspx?id=3182 és a 32 bites változat https://www.microsoft.com/hu-HU/download/details.aspx?id=14 ).

Szerencsére a StackOverflow megadja a választ: https://stackoverflow.com/questions/32052429/how-to-connect-a-windows-mobile-pda-to-windows-10#answer-44564617 . Az alábbit futtassuk le rendszergazda jogokkal, majd indítsuk újra a számítógépet és csatlakoztassuk újra a Windows CE-s eszközt:

 

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RapiMgr /v SvcHostSplitDisable /t REG_DWORD /d 1 /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\WcesComm /v SvcHostSplitDisable /t REG_DWORD /d 1 /f
2017.07.11. 10:14 - legyes

Új sor karakter hozzáadása textarea tartalomhoz

Az alábbi példa az egyszerűség kedvéért jQuery-vel val, de natív JS-ben ugyanezt a karaktert ( 
 ) kell hozzáfűzni. Sajnos a \\\n megoldás nekem nem működött jól, mert kint maradt egy \ jel.

$(‘#textarea_id’).append(‘
‘);

2017.06.19. 14:42 - legyes

7zip command-line mappa kihagyása linux alatt

A 7zip tömörítő lett korunk WinRar-ja. Népszerűsége még mindig növekszik és elérhető több operációs rendszeren is. A nagy méretű és sok fájlt tartalmazó mappákkal is kevesebb buktatóval dolgozik, mint az oly’ népszerű tar+gz. Viszont a dokumentáció nem mindig egyértelmű, reáadásul linux alatt eléggé sok néven érhető el a különböző disztribuciókban ( 7z, 7za, 7zr, …).

A leggyakrabban használt formája ez:

7z a -mx1 arcive.7z /home/legyes/path/to

Viszont ha szükségünk van arra, hogy bizonyos mappákat hagyjuk ki, akkor a dokumentációban elfelejtik egy fontos dologra felhívni a figyelmünket: Linux alatt a ! jel speciális karakter, ezért escapelni kell \! formában, azaz így kell megadni:

7z a -mx1 archive.7z /home/legyes/path/to -xr\!excluded_directory

A kizárt mappa relatív a tömörítendő mappához képest, ami ugyancsak ritkán van megemlítve.

2017.04.22. 17:24 - legyes

MySQL: GROUP_CONCAT() méretének növelése a sessionben

Sokan elkövetik azt a hibát, hogy a MySQL lekéréseket PHP ciklusba teszik, mert másképpen szerintük nem megoldható, hogy több soros eredményt tegyünk bele 1 SQL cellába a lekérdezés eredményénél. Ez a rossz módszer természetesen nagyon erőforrás pazarló és a weboldalak sebesség problémáinak nagy részét is ez okozza.

Az egyik jó megoldás ennek elkerülésére, ha a GROUP_CONCAT() paranccsal egyesítjük a subquery sorait. Viszont alapértelmezetten ebbe csak viszonyag rövid eredmény fér, így nagy eséllyel le lesz vágva a válasz vége. A méret néveléshez adjuk ki az SQL kérés előtt a következő parancsot:

SET SESSION group_concat_max_len = 100000;

Olvass tovább…

2017.04.03. 13:37 - legyes
1 2 3 9