'miner.hu' kategória archívuma.

Internet Hungary 2009

Kedden (és szerda reggel) a szervezők meghívásának eleget téve előadóként is részt vehettem az Internet Hungary idei rendezvényén. Az oldal honlapja, a rendezvény előadásai ugyan a múlt évszázadot képviselték, az 1000 feletti résztvevő azonban aktív és érdekes eszmecserét folytatott. Az előadásom kapcsán, illetve egyéb beszélgetések során potenciális üzleti partnerekkel és lehetséges Miner befektetőkkel is találkoztam (ez egy másik történet, de volt több komoly érdeklődő is), így elmondhatom, hogy a konferencia igen hasznosan telt számomra (és az estémet még Tibi bácsi is vidámmá tette DJ tevékenységével).

A Miner.hu üzleti lehetőségeit bemutató előadásom (melyet két másik startup bemutatkozása, és egy igen rövid beszélgetés követett) jól sikerült és a terem is tele volt, páran be se fértek. Ez utóbbit persze nem volt nehéz elérni, mivel egy squash pályáról volt szó. :) Az előadásomat egyből elérhetővé is tettem, s bár valószínűleg nem jön át teljes mértékben amit szóban még hozzátettem, de íme, most itt is megtekinthető:

Turbó fokozat: előadásom az nginx, Redis és node.JS lehetőségeiről

Szombaton “Turbó fokozat” címmel előadtam a Web Konferencián – az előadás keretében beszéltem az nginx, Redis és node.JS szoftverekről, melyek hasznos építőkövei lehetne egy gyors webszolgáltatásnak. Ha lesz egy kis időm, átírom blogbejegyzésbe is az elhangzottakat, de addig is az előadásom fóliái:

A prezentáció letölthető PDF formátumban is: Turbó fokozat (kb. 10MB)

Miner 2.0 – előzetes

Augusztus 9-én három éves lesz a Miner. Erre a dátumra jelentős szolgáltatásbeli bővülést, és technikai megújulást tűztünk ki célul. Három év alatt immáron 40 GB-osra nőtt a rendszer adatbázisa, 15 millió blogbejegyzéssel, hasonló nagyságrendű videó mennyiséggel őrizzük az elmúlt három év történéseit. Ez az adatmennyiség számos üzemeltetési, fejlesztési problémát is felvetett, ezeket szeretnénk most orvosolni a tudomány és technika újdonságait segítségül hívva. Ebben a bejegyzésben most pár problémáról írok, legközelebb pedig remélhetőleg már arról, hogy hogyan sikerült megoldani ezeket.

Egyik gond a MySQL adatbázis backupja, melyet megoldottunk ugyan egy slave adatbázis beállításával, a napi backup alatt a replikáció leállításával, rsync-kel történő backupolásával, de rengeteg erőforrást emészt fel így is a történet. A régi blogbejegyzéseket persze törölhetnénk, rengeteg helyet felszabadítva, hiszen ki kiváncsi vajon egy két évvel ezelőtt született blogbejegyzésre, de szeretnénk a Miner ezen lehetőségét megtartani. Másik lehetőség az lenne, hogy szétdaraboljuk az adatbázist, és a régebbi tartalmakat csak olvasható formában tároljuk, ezzel az a gond, hogy akár igen régi bejegyzésekhez is hozzá kell nyúlnunk néha, mert a szerző kéri, hogy blogját töröljük adatbázisunkból (ilyen igen ritkán van, de nem mondhatjuk hogy nem tudjuk megoldani). Az irány valószínűleg valamilyen elosztott adatbázisba mentés lesz, mely nem csak a tárolást, hanem egyben a backupot is biztosítani tudja.

Másik gond a lekérdezések sebessége. Itt például a mellékletek friss bejegyzéseiről van szó, itt a gyors megjelenítés a követelmény. A probléma itt abból adódik, hogy egyes mellékleteknél (mint például a film) vannak olyan blogok (pl. sorozatjunkie, comment.com), melyekben nagyon-nagyon sok bejegyzés van. Ilyenkor egy olyan SQL lekérdezés, mely dátum szerint rendez, és több tucat kategóriára szűr, elég sokáig tarthat. Ugyanitt probléma a megfelelő képek, videók kiszűrése is a tartalomból. Már korábban továbbléptünk egy külön indexelésre, illetve keresőszerverünk bevetésére (mely meglepő módon gyorsabb tud lenni, mint a MySQL), további lépés várhatóan az lesz, hogy az egészet felturbózzuk az egy-az-egyben a memóriába pakolással.

Végül, de nem utolsó sorban a robotok működését sem mondanám a legkiforrottabbnak, bár az utóbbi években bizonyított ez a felállás, a további skálázhatóság, és a jobb áttekinthetőség érdekében tovább kell lépnünk. Jelenleg pár PHP-ben írt robot fut párhuzamosan, lekérdezve a MySQL adatbázisból hogy mely blogok RSS-ének letöltése következik, s párhuzamosan elindítanak 100 kérést, az eredményt pedig memóriába pakolják. További robotok a memóriából felolvassák az RSS tartalmát, megnézik van-e új blogbejegyzés, módosult-e már régi, s ha igen, akkor letárolják azokat, s gondoskodnak a mellékletekbe történő “címkézésről” is. Ezt a felállást a MySQL lehetőség szerinti teljes kiiktatásával, s erre kitalált jobszerverek, queue-k összerakásával szeretnénk kiváltani, mely azt is kényelmesen lehetővé teszi, hogy a hamarosan beállítandó új szerverekre osszuk szét a jelenlegi terhelést (az indexelés jelenleg a legerőforrásigényesebb feladatunk).

Persze ez csak az előttünk álló technikai változtatások egy (a jelentősebb) része, s az új szolgáltatásokról még nem is ejtettem szót. A megoldásokról igyekszem majd részletes blogbejegyzésben, blogbejegyzésekben, továbbá ha lehetőségem adódik rá, akkor egy newtech meetup keretében is beszámolni.

Exkluzív: a magyar blogbiznisz

Amikor az exkluzivitásról írt _original a blogján, kicsit elgondolkodtam azon, hogy mi lenne az a tartalom melyről úgy tudnék írni, hogy még sehol máshol sem jelent meg. A Miner.hu-val a lehetőség adott: vizsgáljuk meg hogy hogyan alakult a magyar blogbiznisz az utóbbi két évben. Látogatottsági statisztikákat lehet nézegetni a Webauditon, a friss bejegyzés számokat pedig közzétesszük a Miner.hu statisztika oldalán, de van még mit kigyűjteni, mutatni.

Első körben kigyűjtöttem, hogy a négy nagyobb blogszolgáltató bejegyzései összesítve hogyan alakultak a Miner szerint. Az adatokról annyit kell tudni, hogy csak a freeblog.hu, blog.hu, blogol.hu és a blogter.hu bejegyzésekről szól, sem az egyéb szolgáltatók, sem pedig a független bloggerek bejegyzéseit nem foglalja magában. Ez utóbbit azért nem, mert a Minerbe folyamatosan kerülnek be a független blogok, így ezek a számok igencsak torzak lennének ha a hazai blogbejegyzések számának alakulását szeretnénk vizsgálni.

A számokról nem gondolom, hogy pontosak lennének, a cél sokkal inkább az, hogy a trendeket láthassuk. Az egyes napi tüskék a legtöbb esetben valószínűleg mutatnak valamit, de sok esetben előfordulhat az is, hogy csak zajként foghatóak fel. A freeblog.hu, blog.hu, blogol.hu számai a három blogszolgáltató visszajelzése, illetve a velük történő együttműködés kapcsán nagyságrendileg pontosnak mondható, a blogter.hu számai szerintünk pontosak, a szolgáltató szerint pedig nem. Mindesetre bontás egyelőre nincsen, csak összesített adatok.

A képre kattintva az egyes számokat is meg lehet tekinteni, de mégegyszer hangsúlyozni szeretném: inkább csak a trend lehet a lényeg.

Ha a bejegyzés tetszést fog aratni, további infókat is ki tudunk nyerni az adatbázisból — hogy mit próbáljunk meg lekérdezni, azt illetően szívesen veszünk tanácsokat.

Az igen randa, de hasznos Online Helyesírási Szótárnak köszönöm hogy megnézhettem az exkluzív szó helyesírását. Tibornak köszönöm az ötletet. Nektek pedig hogy blogokat írtok, olvastok.

Lapozó HTML kódja

A lapozás jellemző eleme a különböző webalkalmazásoknak, azonban így is túl sok rossz megoldást láttam már. A Woork bejegyzése (Perfect pagination style using CSS) ezt a kérdést járja körül. Én is.

Nem fogom az ott leírtakat elismételni, így mindenképpen ajánlom az ottani példák és megoldások elolvasását. Az általam preferált HTML kódot szeretném bemutatni, és leírni, hogy miért gondolom jó megoldásnak:

<ul class="pagination">
  <li class="previous off" rel="previous">« Previous</li>
  <li class="active">1</li>
  <li><a href="?page=2">2</a></li>
  <li><a href="?page=3">3</a></li>
  <li><a href="?page=4">4</a></li>
  <li><a href="?page=5">5</a></li>
  <li><a href="?page=6">6</a></li>
  <li><a href="?page=7">7</a></li>
  <li class="next" rel="next"><a href="?page=2">Next »</a></li>
</ul>

Egyrészt a lehetséges oldalak felsorolása listaszerű tartalom, másrészt a “hagyományos” megoldást, a táblázatot nem szeressük layoutra használni, harmadrészt span-okban ne is gondolkodjunk, mivel a felolvasó szoftverek állítólag nem igazán különítik el egymástól az így egymás után kerülő elemeket, megnehezítve a navigációt (igen, a Miner.hu lapozója több szempontból is rossz példa – az így maradt tipikus esete). Ráadásul egy ilyen lapozó CSS nélkül is átláthatóan, jól néz ki.

Aminek a megjelenítését meg kell oldanunk egy ilyen lapozónál, az az előző oldal, lehetséges oldalak és a következő oldal megjelenítése. Az éppen aktuális oldalt mindenképpen ki kell emelnünk, ízléstől függ, hogy azt is meghagyjuk-e linknek, vagy pedig nem. Akkor célszerű, ha több megjelenítése is lehet egy konkrét találati oldalnak, és mintegy “reset” funkciót lát el az aktuális oldalra kattintás. Ugyanígy az előző oldal az első oldalon ne legyen link, a következő oldal az utolsó oldalon ne legyen link, mert nem sok értelme van a dolognak. Itt is ízlés kérdése lehet, hogy ilyenkor megjelenítsük-e egyáltalán, vagy elhagyjuk, tán a “szűrkítve” meghagyás a jobb a konzisztens megjelenés szempontjából. A lapozott tartalomtól függően lehet “körbelapozást” csinálni, vagyis hogy az első oldalon az előző linkje az utolsó oldalra visz, ennek akkor van értelme, mikor várhatóan értelmes tartalmak találhatóak meg az utolsó oldalon is (azaz nem relevancia szerűen kapcsolódnak az oldalak, mindegyik ugyanolyan értelmes tartalmat kínál, vö.: cikkek lapozója vs. kereső lapozója).

A felsorolt oldalszámoknál is sokféle stratégiát lehet követni. Ha van, akkor mindig jelenítsük meg az előző és következő két-három oldalnak is a sorszámát (avagy ne 6 következő, 0 előző oldal látszódjon), az aktuális oldal legyen célszerűen középen. Ezeken kívül, szintén az adott tartalomtól függően megjeleníthetünk távolabbi oldalakat is. Ez akkor lehet jó, ha mondjuk dátum szerint listázunk elemeket, és úgy szeretne gyorsan eljutni valaki egy adott dátumtartományhoz, hogy nem tudja, melyik oldal fele lehet, és nagyokat ugrálva akar eljutni oda. Ha sokszor fordulhat elő, hogy egy adott konkrét oldalra szeretne ugrani valaki, akkor kitehetünk egy “ugrás egy adott oldalra” linket is, ahol JavaScriptből megkérdezzük az oldal sorszámát (vagy input mezőt jelenítünk meg erre a célra, vagy egy prompt() függvényt hívunk meg), majd az adott oldalra dobjuk látogatónkat. Hányszor írtad már át URL-ben az oldal sorszámát? Még mindig a gyors navigációhoz kapcsolódva, felmerülhet az első és az utolsó oldal kiemelése is – itt is az alkalmazás határozza meg, hogy van-e értelme ennek.

Kicsit a mikroformátumokról. Egyes böngésző kiterjesztések már támogatják a dolgot, és ki tudja, hogy a jövőben mi fogja támogatni, jelöljük meg hát mi is az előző és következő (akár az első és utolsó) odalakat mikroformátum módra, gépek számára érthetően. Ehhez rel=”previous” és rel=”next” részeket írjuk az előző és következő linkekhez (és a rel=”start” és rel=”end” részeket az első és utolsó oldalra mutatókhoz).

Végül nézzük az egyes elemekhez rendelt class-okat. Az előző és következő elemet jelöljük meg “previous” és “next” class-szal, így külön megjelenést tudunk adni nekik, akár kitolva balra és jobbra oldalra ezeket a linkeket, akár másmilyen formában. A sima oldal linkeket felesleges külön class-okkal jelölni. A nem aktív linkeket, elemeket hogy ha “off” class-szal jelöljük, akkor az “off” osztályhoz tudunk az inaktivitást jelző stílust rendelni (pl. szürke), egységesen, tehát nem kell külön definiálni a elemenként. Igen, egy HTML elemhez szóközzel elválasztva több osztályt is adhatunk, és ez teljesen szabványos, minden böngészőben működő megoldás!

Gondolkodjunk még el azon, hogy a tartalom után megjelenített lapozó nem jönne-e jól a tartalom előtt is, és ha igen, akkor ne felejtsük el oda is kirakni.

Azt hiszem nem hagytam ki semmit. Vagy mégis?

Játék a Miner API-val II.

Előző alkalommal a blogkeresés adta találatokból próbáltam meg kihozni valamilyen érdekeset, most pedig a TurulCsirip (Twitter) kereső köré építettem egy kisebb mashupot. Az ötlet lényege: a twitteren belinkelt YouTube videókat jelenítsük meg utólag, “videó archívumként”. Ebből született meg a “Videózz“, majd nemrégiben pedig a “Videózz 2.“.

Miner.hu

Mind a két oldal alapjában véve ugyanúgy működik: elindít egy “youtube com watch” keresést a turul.miner.hu-n, ebből kiszedi a videókat, illetve az egyéb szövegeket, és ezeket megjeleníti. Ami a második változatban más, az a megjelenítés, ehhez a YouTube API-ját, még konkrétabban pedig a Zend GData API egyik demóját használtam fel. A Google fejlesztők által összeállított példa YouTube kereséseket tett lehetővé, ezt cseréltem le, és helyettesítettem a Miner felől érkező keresés adatokkal! Jó szórakozást!

Miner.hu Premium Widget

Miner.hu Premium WidgetA Miner.hu blogján már bejelentettem, de itt is megemlítem: elkészült egy a Miner.hu mellékleteket felvonultató UWA widget, mely a web fülön többek között a Webakadémia tartalmait is szolgáltatja (meg persze egy halom másik blogot gyűjt egybe). A hivatalos Webakadémia RSS widgettel ellentétben az új widget a Netvibes mellett iGoogle, Apple Dashboard és egyéb platformokon is elérhető, szemléltetve ezzel is az UWA előnyeit. Rövidesen egy mini UWA “tanfolyam” beindítását is tervezem a Webakadémián, melyben bemutatom hogy hogyan készíthetőek hasonló widgetek. Szívesen veszek javaslatokat, hogy milyen tartalmú példa widgetek készüljenek el ennek keretében.

Játék a Miner API-val

Tegnap kicsit játszottam a Miner.hu API-jával – kiváncsi voltam hogy miket lehet kihozni a blogkereső találati adataiból. Egész jó lett a végeredmény, talán egyszer majd beépül pár dolog belőle a Miner.hu-ba is.

Miner.hu

A programocska megtekinthető élőben is a http://barthazi.hu/jaccoter/miner/ címen. Gyakorlatilag az adott keresőkifejezéshez kapcsolódó releváns kifejezéseket hivatott megjeleníteni. Rákeres a beírt kifejezésre, a talált blogbejegyzésekből eltávolítja a HTML részleteket, majd megszámolja, hogy egy adott két vagy három szavas kifejezés hányszor fordul elő. Amelyek többször is előfordulnak, megjeleníti.

Pár trükk van még a programban, egy több ezres tulajdonnév listát is használ, továbbá egy nagyon buta kis algoritmussal ezeket szótövezni is képes, így ragozott neveket is megtalál. A csak “stopword”-öket (gyakori magyar kötőszavak) tartalmazó kifejezéseket pedig kiszűri. Alapvetően kisbetűsít minden kifejezést, hogy az eltérő módon írt, de ugyanolyan szavakat is megtalálja, de a folyamat végén megnézi, hogy melyik a leggyakoribb írásmód, és ezt jeleníti meg.

Hogy mire volt jó ez a kis játék, még nem tudom, de érdekes dolgokat lehet kihozni segítségével, és egy kis ujjgyakorlatnak is jó volt. A Miner.hu címlapon megtalálható Trends kifejezésekkel, vagy egyebekkel érdemes kísérletezni, az általános szavakra nem ad eredményt.

Web.Miner.hu

Talán a legtöbben most a http://web.miner.hu/-n keresztül juttok el hozzám, de akkor is úgy gondolom, hogy a potenciális célközönségből viszonylag kevesen ismerik az oldalt, így egy kicsit promózom.

A Web.Miner.hu egy a Miner.hu (blog)kereső motorjára épülő aggregátor, magyarán szólva különböző webfejlesztésről, webkettőről és kapcsolódó témákról író blogok bejegyzéseit gyűjti össze. Jelenleg 20 feletti a blogok száma (bár nem mindegyik aktív), egyes blogoknál az összes, míg más blogoknál pedig egy adott kategória bejegyzését gyűjtjük. A gyűjteménybe bárki bekerülhet, aki jó színvonalon ír csak a fent jelzett témákban, vagy pedig tud olyan RSS-t biztosítani, mely a fenti témákra szűkít. Jelentkezni az oldalon jelzett címen lehet. Aki RSS-en keresztül szeretné olvasni az aggregátor bejegyzéseit, az pedig a http://web.miner.hu/rss címen iratkozhat fel.

Az aggregátornak vannak testvérei is, a http://marketing.miner.hu/, http://gasztro.miner.hu, http://foto.miner.hu/ és http://orvos.miner.hu/ címeken. Jó olvasgatást!