P mint performancia (és mint PHP)

Néha úgy hozza a sors, hogy az embernek be kell piszkolnia a kezét. Apache-al, PHP-val, és mindennel ami ezzel jár.

Egy web szerver készítése általában egyszerű feladat.

apt install apache2
apt install php

A bonyodalmak általában ez után következnek, mivel ami ez után történik produkcióban az meglehetősen lassú, és erőforrás igényes. Mint régi új szerver tulajdonos meglepődve konstatáltam, hogy egy normális weboldal betöltése eltart 3 másodpercig, ami bár nem sok idő (főleg egy kazettás töltéshez képest a c64-en), de általában ezzel már nem vagyok túl elégedett.

Hogy ez ne így legyen ahhoz az alábbi dolgokat kell tenni:

Kezdjük az apache-al, ami alapesetben preforkol, de az lassú, főleg ha virtualizált környezetekről van szó, célszerűbb előre létrehozni kiszolgáló szálakat, és thread-eket. Ehhez mpm módot kell váltani. Itt lehet event-et is használni, de nekem a worker alapú megoldás optimálisabb, mivel egyszerűbb és nem számítok nagy egyidejű lekérdezésre:

a2dismod mpm_prefork
a2enmod mpm_worker

Ez előtt a php modult is ki kell kapcsolni. A worker alapú megoldással az alap php modul általában nem működik, mivel nem thread safe (Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP). De ez nem is akkora nagy probléma, mivel php terén is érdemes már a kezdetek kezdetén perspektívát váltani, és telepíteni a php-fpm-et:

apt install php-fpm
a2enmod proxy_fcgi
a2enconf php8.2-fpm

Ezek után a php beállításokat már az fpm-es php.ini-ben érdemes szerkeszteni (/etc/php/8.2/fpm/php.ini ). Ha ezzel megvagyunk akkor még egy opcache telepítést is érdemes megtenni.

apt install php-opcache

A telepítés után a beállítások itt találhatók: /etc/php/8.2/fpm/conf.d/10-opcache.ini

Az én beállításaim valahogy így néznek ki a teszt site-on:

zend_extension=opcache.so
opcache.jit=on
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=240
opcache.validate_timestamps=1

Érdemes továbbá a PHP által kezelt objektumokat perzisztens módon tárolni, pl. memcached-ben.

apt install memcached

A konfiguráció itt található: /etc/memcached.conf de nagyon nem kell bántani, talán a memória méretét érdmes megemelni 127 mb-ra (alapból 64)

service restart memcached
apt install php-memcached
apt-get install php-pear php-dev zlib1g-dev
pecl channel-update pecl.php.net
pecl install memcache

Php.ini-be fel kell venni: extension=memcache.so majd újra kell indítani az fpm php-t.

WordPress plugin-ből érdemes telepíteni az alábbit:

Memcached Object Cache

Így majd kapunk értesítést a wordpres-sen belül, ha esetleg új verzió lenne. Sikeres telepítés után kézzel kell átmásolni a object-cache.php fájlt a /wp-content/plugins/memcached könyvtárból a wp-content könyvtárba. Majd felvenni a WP_CACHE_KEY_SALT változót a wp-config.php-be (a plugin leáírsa – readme.txt – alapján)

Ha működik a dolog, akkor a Query monitor Overview fülén tudjuk majd ellenőrizni:

Ha ezzel mind megvagyunk nincs más dolgunk, csak a wordpress oldalon is körülnézni egy kicsit. Itt nem érdemes kézzel matatni a dolgokban, nagyszerű plugin-ek vannak, amik megteszik ezeket helyettünk. Én az alábbiakra tettem le a voksom:

Query Monitor – hogy lásd mi történik

Memcached Object Cache – a php objektumok memcached-ben történő tárolásához

WP Rocket – a legenerált oldalak gyorsítása, és további optimalizálások (css, js minify, stb.)

Smush – kép tömörítés és konverzió webp formátumra (és igény esetén átméretezés adott limitre)

Ha mindent jól csináltunk, akkor egy viszonylag gyenge szerveren (Intel Pentium Processor E6700 és 1 Gb memória), az alábbit kellene látunk egy Elementor által generált oldal esetén.

Ui: eredetileg egy oldalbetöltés 3s volt…

A router, az agy, és két füstölgő puskacső

Olyan szerencsés helyzetben vagyok, hogy az utcánkban fellelhető pokoli ADSL vonalat már jó ideje optikára cserélte a T. Mivel a média fogyasztási szokásaink teljes egészében átcsatornázódtak az online felületekre (Netflix, HBO online, Youtube, Twitch, Spotify és társai), az internet előfizetést is átcsoportosítottam, és a kábeltévé helyett lett az 1000mbit/s .

Elsőre ez jól hangzik, de az ördög a részletekben rejlik. Pl. a T által adott modem még elméletileg sem tud ennyi adatot átengedni magán, kezelni aztán meg végkép nem. Ezt gondolom ők is érezték, ezért adtak mindenféle instrukció nélkül egy D-LINK (brrrr) DIR-842-es “router”-t.

A koncepció az lehetett, hogy bár a noname kínai modem nem tudja kihajtani a vonalat, ha a D-LINK-et használjuk erre PPPoE módban (tehát kvázi modemként) akkor valamivel jobb lesz a helyzet. Ezzel a setup-al kb. 600-800mbit/s már elérhető az 1000-ből ha nem nagyon terhelt a hálózat. Gondoltam egy PPPoE beállítás nem okozhat gondot (első hiba). Már a PPPoE jelszóval elakadtam, amit bár láttam a T-COM-os modem felületén, de csak jelszó mezőként. Visszaalakítottam text-é ami egy elkódolt karaktersorozatot tartalmazott. Sikerült firmware-t találnom hozzá, amúgy is szeretem az ilyen cuccok dolgait nézegetni, pár óra alatt meg is lett a kódolást végző script, meg nekem a python átiratom hozzá, így már nem csak felhasználónevem, hanem jelszavam is volt.

Széttúrtam az addigi infrastruktúrát, bekötöttem a routert ami az átvétel óta a polcon porosodott, és vártam a széles sávú csodát.

Ennyi élettapasztalattal már tudom, hogy csodák csak ritkán vannak (ezért hívják őket csodának), így meg sem lepődtem, amikor az internet kapcsolatot jelző ikon továbbra is pirosan világított.

Olvastam kicsit a neten, elviekben összedugdosás után mindennek magától kellene működnie, ezzel is elment pár óra, végül csak felhívtam az ügyfélszolgálatot, ahol a szokásos intró után (tududu du dummmm) egy AI-nak kellett volna elmagyaráznom, hogy nem működik a PPPoE kapcsolatom… Elég jól elbeszélgettünk, aminek átirata valahogy így nézett ki:

  • Üdvözlöm, én az ostoba AI vagyok, amit rengeteg pénzért eladtunk a TCOM-nak, felismerek szavakat amiket hallok aztán majd lesz valami
  • Szia, én az ügyfél vagyok, és nem működik a PPPoE kapcsolatom
  • Az interneteléréssel van probléma?
  • Igen
  • Hálózati probléma van?
  • Nem
  • Az Internet eléréssel van probléma?
  • ….

A végén már egész jól tudtam, milyen szavakat kerüljek a kommunikációnk során, és akkor 2-3 teljesen felesleges kör után az ügyintézőhöz kapcsol… Ezúton is köszi valakinek, aki kitalálta ezt a szart, és jár a gratuláció annak aki meg is vette.

Ezek után megtudtam, hogy PPPoE jelszót meg tudom változtatni online is, ezt a kört meg is futottam (feleslegesen, mert mint kiderült jól fordítottam vissza a jelszót, nem az volt a gond), továbbra sem lett jó. Ismét telefonáltam, AI, várakozás, elmondták, hogy ők nem tudják, kérdés van e internet PPPoE nélkül. Mondom van. Hát akkor ők nem tudják, ők csak a routerig érdekesek, hívjam a fizetős ügyfélszolgálatot.

Itt volt az első pillanat, amikor legszívesebben elővettem volna azt a bizonyos puskacsövet, és bementem volna az ügyfélszolgálatra ügyet intézni. De mivel én ilyen visszafogott csávó vagyok, puskacsövek nélkül, 3-4 órányi beszélgetés után úgy döntöttem lesz ami lesz, felhívom a fizetős ügyfélszolgálatot (szuperszervíz), ahol a srác tényleg értelmesebb volt mint a másik helyen az összes többi együtt, és korrekt is, mert elmagyarázta, hogy ez pénzbe fog kerülni ha segít, de igazából nem is tud segíteni, mert ezt a problémát a T ingyenes ügyfélszolgálata tudja megoldani, mégpedig úgy, hogy átkapcsolják a fos modemjüket PPPoE módba. Abban maradtunk, hogy ne mondjak bonyolult mondatokat, ne is próbáljam meg elmondani, hogy miért meg hogyan, csak azt mondjam hogy “modem -> PPPoE mód -> bekapcsolás”. Akkor hátha átmegy az üzenet.

Felhívtam őket, lekűzdöttem az intelligens asszisztenst (az uborkákról és a paradicsomokról beszélgettünk), hogy aztán egy vele egyszintű emberi hasonszőrűvel kb. 25 perc várakozás után lefolytassam a következő beszélgetést:

  • Legyen kedves átkapcsolni a modememet PPPoE módba
  • Ööö nem tudom miről beszél, de átkapcsolom egy technikus kollégákhoz

Ez volt az a pont, amikor már csak 30 perc választott el attól, hogy a technikus kolléga az én “régi” eszközömet távolról PPPoE módba tudja kapcsolni. Hittem benne, hogy meg tudja csinálni, kb. 3x mondta, hogy egy pillanat, még kipróbálok valamit, és én egyszer se mondtam el neki Yoda mester örök érvényű szavait: tedd, vagy ne tedd, de ne próbáld… Pedig sokszor eszem bejutott…

Ezek után el is indult az internet, és jött a következő állomás, az igen neves D-Link cég routernek nevezett terméke, ami egész addig működött, amíg nem próbáltam beállítani rajta pár port forward szabályt. Aztán kicsit önellentmondásba keveredett a saját route szabályaival, és bizonyos kérések hatására meg-megállt pár percre. No meg egy port forward szabály se működött…

Sajnos az OpenWrt, DDWrt körről pont egy hw revízióval maradtam le, szóval ez a router max wifi AP-nek használható… Sebaj, ahogy a mondás tartja, ingyen routernek ne nézd a firmware-jét, elkezdtem hát inkább más routereket nézni.

A router piac teljesen megváltozott mostanában. Vannak már Gaming routerek, amik erősen középkategóriásak, és mind wifi-s. Az áruk nem azért sok, mert annyira tudnak route-olni, meg csomagokat kezelni, hanem mert a legszuperebb wifi szabványokat támogatják, ami nekem pont nem kell. De ha kellene se fizetném ki egy kisebb számítógép árát, egy wifi routerért, ami sok mindent tud, de gyorsan, és jól routolni azt pont nem. Ami tényleg jó, és bír sok klienst, meg nagy sávszélességet az kb. 80k és még wifi sincs benne. Mivel a PPPoE már megvolt, a szerverem úgy is mindig megy, gondoltam átrakom a router funkcionalitást oda. Ott nem lesz melegedési gond, és a PPPoE, routing, és társai kb. nem kimutatható cpu kapacitást emésztenek fel egy mai gépen. Ezzel egy probléma volt, amit pedig úgy hívtak, Microsoft.

Tudtam, hogy nem lesz egy leányálom Windows 8 alatt routing-ot konfigurálni, főleg olyat, ami nekem kell.

Ez az a pont, ahol megint számot kell vetnem magammal, és leírnom, miért is váltottam windows szerverre:

  • akkor és ott jó ötletnek tűnt
  • szeretem a kihívásokat
  • van rajta onedrive kliens
  • van rajta norton antivírus amiből volt egy privát előfizetésem
  • unalmas volt, hogy ubuntu alatt minden átlátható, és általában működik is

Szóval a PPPoE kapcsolat felkonfigurálása gyorsan ment. Van ott egy kis kavar, hogy a fizikai interfész furcsa státuszban marad amin a kapcsolat megy, de kikapcsoltam róla minden protokollt, akkor már nem sok vizet zavart. Az internet megosztásért az Internet connection sharing felel, pár kattintás, és láss csodát működik. Pontosabban: működik, olyan microsoft-osan.

Egy demo erejéig ezek a funkciók nagyszerűek, és jól prezentálhatók. Csak éppen a megosztás után a teljes belső subnet-em elmászott a 192.168.137.x tartományba. Gondoltam sebaj, kerestem a neten, meg lehet változtatni. Meg is változtattam, itt:

HKLM\System\CurrentControlSet\services\SharedAccess\Parameters
(REG_SZ) ScopeAddress
(REG_SZ) StandaloneDhcpAddress

Ezek után már volt DHCP szerverem, csakhogy olyan módon, hogy a létező teljes címtartományból oszt címeket… Hogy mi alapján rejtély. Ez nem annyira jó, mert nálam nem minden DHCP-ről megy, és van pár dolog aminek akkor is fix ip kellene, ha arról menne (pl. QoS miatt). Na range definíciót, vagy hw adress mapping-et persze már nem tud. Gondoltam sebaj, elengedem, használok másikat, vagy konfigurálok egyet linuxon, de ezt a csodát kikapcsolni se nagyon lehet. Én az alábbit tettem: a lan interfész IP címét megváltoztattam az ICS beállítás után, a registryben pedig egy másik címtartományt adtam meg. így valamiért a routing működött (talán mert az interface alapú…) de a DHCP szerver nem tud mit kezdeni magával és az eltérő címtartományokkal, ezért el sem indul (erről persze se log, se dokumentáció, se semmi). Innentől már csak az OpenDhcp szervert kellett telepíteni, és volt is normális belső hálózatom DHCP-vel, windows alatt.

Aztán ott van a windows tűzfal, a maga 100000 szabályával. Ezt elég egyszerűen bekonfiguráltam. Letöröltem mindent, felvettem azt a 6 szabályt ami nekem kellett (Deny All, Allow lan, pár port), és láss csodát működött. A windows tűzfal nem rossz, csak szerintem külön csapat csinálta a tűzfalat, és a front-end konfigurációt.

Miután már tűzfalam is volt, csak a port forwarding volt hátra. Ezt a PPPoE adapternél az ICS beállításoknál lehet matatni, egyszerű: Port, hova, protokoll, és kész is. Elméletben. Minden forgalom, ami a szerverre érkezett, az működött. Minden ami külső szerverre (pl. a virtual box-ban futó ubuntu-ra) az nem. Ezzel futottam pár kört, a megoldást végül szintén egy külső alkalmazás jelentette: a PassPort ami egy egyszerű port forwarding implementáció. Tehát a WAN lábról forwardoltam a portokat a szerverre, a szerverről ezzel a belső hálózatra, és így már működik.

A fenti problémák elviekben korrektebbül megoldhatóak Windows server edition alatt (ott pl. van RRAS is), de nekem nem ilyen windows-om van 🙂

A QoS-t már tényleg point and click-el beállítottam, azok a fejlesztők valószínű a tűzfalas fejlesztőkkel voltak haverok 🙂

Ezek után jött a teszt, ami egy egyszerű Ookla-s speedtest volt. Az eredmény egy kék halállal egybekötött kernel security check volt… Itt már kicsit elvesztettem a lelkesedésemet, és nagyon csúnyán kezdtem nézni a norton antivírusra. A csúnya nézésből a 3. konfigurációs próbálkozás és kifagyás után uninstall lett, és láss csodát. 2-3 nap alatt talán sikerült a windows 8.1-ből egy normális router gépet faragni…

Hibabejelentés

Előző héten eltűnt az internet, és a magam visszafogott módján próbáltam jelezni a szolgáltatónak, hogy nem annyira jófejség családokat a digitális őskorba száműzni…

Sajnos nem jártam sikerrel (legalábbis 3 nap múlva még mindig nem volt net), ezért úgy gondoltam ideje szakember segítségét kérni. Baráti segítséggel (köszi Attis!) megtaláltam az ide vonatkozó hanganyagot. Mivel hosszas gyakorlás után sem tudtam megközelíteni a mester teljesítményét, ezért inkább megvágtam az anyagot, későbbi felhasználásra.

Szóval ha elmenne az internet, akkor hangfal felhangosít, háttérzaj leszáll, és indulhat is a panaszbejelentési folyamat, az alábbi mankókkal.

Nem akarsz elmenni a picsaba

Szar az adsl te meg ott vakarozol

Mit csinalsz ott

Nem lenne szar az adsl ha dolgoznal

Picsaba bazd meg

Szar az adsl erted es vakaroztok ottan

Mit kepzeltek

Vakarozol es szar az adsl nem tudunk netezni

Itt van az egesz csaladom es nem tud senki netezni

Nem megy erted, javitsd meg bazdmeg

Itt van ez a szar, ra van irva, hogy ize

Mondom, hogy vakarozol bazdmeg

Mozgas, nem erek ra bazdmeg

Meg ma bazdmeg, mintha elnel

Nem sertegetlek, de faszom tele, hogy nem megy az internet

 

Ha épp megy az internet, és csak amolyan munka utáni felüdülésként szeretnéd magadba szívni a hatékony panaszbejelentés rejtelmeit, akkor rakd be alá Ellen Allien – Jack My Ass c. számát, és nyomogasd random a play gombot… 🙂

 

Ui: amire elkészültem a wav-okkal, addigra érkeztek meg a levelek a szerveremtől, hogy dolgokat nem tudott elintézni, de most már minden ok… Így élesben nem tudtam tesztelni a dolgot, de ami késik, nem múlik 🙂

Lifehacker és chrome kiegészítők

Néha néha felbukkan egy egy gyöngyszem a lifehacker-en, amiért megéri olvasgatni. Ilyen a Lineman Splice, vagy a Lace Lock. IT területen sok újdonságot nem szoktam találni, de azért az érdekesebb cikkeket mindig átfutom. Nem rég jelent meg egy cikk, ami a google chrome memóriahasználatát, és ennek okait taglalta. Már ezért a kijelentésért önmagában is érdemes volt elolvasni a cikket: “free RAM is useless RAM”

Viszont ebben a cikkben került említésre a The Great Suspender kiegészítő, ami nekem új volt. Ez egy nagyon jó cucc, és az én örökérvényű böngésző kiegészítők listámról még hiányzott. Azt tudja, hogy a rég nem használt tab-okat egyszerűen kidobja a memóriából, de a helyét meghagyja, így ha kell akkor bármikor visszatölthetjük a tartalmát. Kötelező darab, semmi többet nem tudok elmondani 🙂

És ha már kiegészítők, akkor itt az ideje, hogy a 2007-es Firefox-os listát frissítsem egy 2015-ös chrome-os listára:

Google Chrome Extensions:

Google Chrome Apps:

A lista a Chrome Extensions Share kiegészítővel készült.

A jó öreg redirect…

Ha egy teljes domaint szeretnénk redirectelni .htaccess fájlból:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain\.hu$ [NC]
RewriteRule ^(.*)$ http://newdomain.hu/ [R=301,L]

Postfix + google apps

Google apps-ban van lehetőség SMTP Relay szerver engedélyezésére. Ez akkor jó, ha például olyan helyről szeretnénk levelet küldeni, ami nem rendelkezik Google Apps felhasználóval, például szerverekről.

Ezt a Google Apps adminisztrátori felületén lehet megtenni:

Google Apps -> Settings for Gmail -> Advanced Settings -> General Settings

SMTP relay service

Itt érdemes bekapcsolni az alábbi két opciót:

Only accept mail from the specified IP addresses – csak megadott helyekről fogadjon el leveleket

Allowed senders: Any addresses (not recommended) – onnan viszont bármilyen címről

 

Be is állítottam mindent, de a google SMTP szervere folyamatosan eldobálta a levelet, mert valamiért a postfix mindig csak a szerver nevét (pl. root@server) rakta bele a feladó mezőbe, amit a google annak ellenére sem szeret, hogy beállítottuk, hogy szeresse…

A végső megoldást az alábbi hack jelentette:

A /etc/postfix könyvtár alá létrehoztam egy sender_canonical nevű fájlt, aminek a tartalma:

/^(.*@).*$/     ${1}server.voji.hu

Módosítottam továbbá a /etc/postfix/main.cf-et:

sender_canonical_maps = regexp:/etc/postfix/sender_canonical
relayhost = smtp-relay.gmail.com:25

Ezek után már csak ki kellett generálni a sender_canonical-hoz tartozó .db fájlt:

postmap sender_canonical

valamint újrarúgni a postfix-et:

sudo postfix reload

 

És már csak egy gyors teszt volt hátra:

echo "Test mail from postfix" | mail -s "Postfix test" voji@voji.hu

 

Mindeközben a /var/log/mail.log fájlban:

Sep 10 14:44:20 server postfix/smtp[11752]: 98D866567C3: to=<voji@voji.hu>, relay=smtp-relay.gmail.com[173.194.65.28]:25, delay=0.7, delays=0.34/0/0.26/0.09, dsn=2.0.0, status=sent (250 2.0.0 OK 1410353060 q15sm45749wij.3 – gsmtp)

Sep 10 14:44:20 adsrv2 postfix/qmgr[11744]: 98D866567C3: removed


Tadaaam.

 

Ui: azt, hogy a postfix által küldött levelek normális feladóval rendelkezzenek biztos el lehet érni ennél kultúráltabb módon  is, de egyenlőre ennél jobb megoldást nem találtam (pedig próbálkoztam midnenféle myorigin = /etc/mailname-el és társaival is)

 

 

AdBlock Plus on android

Az AdBlock Plus böngésző bővítmény minden telepítés során az elsők között van nálam, a mobil alkalmazásokért pedig inkább fizetek, semmint reklámokat nézzek. Viszont amikor már iOS-en és Androidon is fizetnem kellene a reklámok letiltásáért egyazon alkalmazáson belül, akkor elszomorodok…

Egy ilyen elszomorodásom alkalmával gondoltam rákeresek, hogy van e megoldás androidon belül arra, hogy kikapcsoljam a kéretlen reklámokat. Meglepődtem, amikor az AdBlock Plus for Android volt az első találat. Maga a koncepció zseniális, a mobil verzió ugyanis egy lokális proxy, ami a reklámokat szolgáltató szerverek felé egyszerűen nem engedi át a forgalmat. Így gyakorlatilag minden böngésző, és alkalmazás alatt működik.

Telepítés után az egyetlen dolog, hogy a rendszer életre kelljen az az internet elérésre használt kapcsolatok módosítása, hogy a forgalmat az AdBlock Plus által.

Ezt úgy tudjuk megtenni, ha az aktuális wifi kapcsolatra hosszan klikkelünk, majd a felugró menüben kiválasztjuk a modify connection opciót, és ott megadjuk a proxy szervert (alapból a címe localhost és a port 2020).

A mobil adatkapcsolat esetén is hasonlóan kell eljárnunk, csak ott Settings -> More… -> Mobile networks -> Access Point Names -> (alapértelmezett AP ami ki van pipálva) -> Proxy és Port beállítások

Hello Spotify

Szeretem a Google-t, hiszen sok mindent köszönhetünk nekik. Gondoljunk csak a keresésre, gmail-ra vagy a maps-ra, esetleg az androidra. Ezek nélkül lehet még mindig létezne symbian, nokia maps, és emberek tömegei hinnék azt, hogy ez normális.

Elég sokat hallgatok zenét (munka közben, és munka után is), és szeretném azt hinni, hogy Magyarországon is van már akkora bérszínvonal, hogy megengedhetem magamnak az online zene streaming-et, legálisan, egyszerűen már nem volt kedvem mp3-ak letöltésével, másolgatásával foglalkozni.

Adott volt a google play all access, működött a keresztértékesítés, elő is fizettem rá, úgy bő fél éve. Jól elvoltunk, bár voltak komoly hiányosságok. Pl. előadókra nem lehetett feliratkozni rss feed szerűen, hogy ha csinált valamit, akkor azt meg tudjam hallgatni. Mi tagadás ez picit zavart, de ezen még túlemelkedtem. Sokkal jobban zavart, hogy ipad-ra nem sikerült fél év alatt kiadni a normális klienst… Értem én, hogy google, android, stb, de meguntam.

Ma töröltem az előfizetést, és előfizettem a spotify-ra. Van ipad kliens, lehet albumra feliratkozni, és sokkal több zenét érek el, vannak mindenféle social vonatkozásai, újra él a last fm profilom, szóval öröm boldogság. Ja és véletlenül az előfizetés is pont annyiba kerül mint a google-nél az all access.

Már csak egy feature hiányzik mindkét rendszerből. Az előadók csv export és import képessége… Ez azért jól jönne, ha mondjuk a kedvenc előadóim listáját mozgatni szeretném a rendszerek között, de gondolom ezt nem véletlenül nem csinálják meg… Ha már a windows preinstalled böngészőkből ekkora botrány lehet, akkor nem tudom online szolgáltatások között miért nem teszik kötelezővé az átjárhatóságot, legalább ilyen alap szinten…