Sziasztok! Kelemen Gábor délelőtt már bemutatta, hogy hogyan is kell használni a nightmonkey-t, ami az egyik gyöngyszeme a magyar közösségnek. Az elkövetkező fél órában megpróbálom bemutatni hogyan is működik a dolog a háttérben. https://launchpad.net/ddtp-lp-html ez a projekt honlapja [SLIDE 2] Igen, valójában ő a nightmonkey, a gyöngyszemünk is lehetne, de azt hiszem nem erről akartam beszélni. ne ragadjatok le [SLIDE 3] Igen, na ez az amit kerestem. Először bemutatom, hogy milyen előfeltételek és munkálatok előzték meg azt, hogy a nightmonkey a mai formáját elnyerhesse, majd arról lesz szó, hogy milyen technikák és technológiák üzemelnek a háttérben. Igyekszem beleférni az időmbe ígérem. :) pláne így :) megvan a probléma oka [SLIDE 4] indítsátok újra a lernidet elrontottam a naptárat :( [SLIDE 2] nehogy lemaradjatok róla [SLIDE 4] A lefordítható szövegek a tárolók, Packages fájljaiból jönnek. Ezek olyan fájlok amik tartalmazzák a tároló minden csomagjáról a szükséges információkat. Lássuk mi az ami minket érint: http://pastebin.ubuntu.com/380209/ Na ebből a nagy kulimázból nekünk nem kell csak az a rész ami a Descripton: rész után van. 16. sor Ez is két, illetve több részre tagolódik. Az első sort nevezzük úgy, hogy rövid leírás. Ez általában mindig csak pár szó, ami tényleg nagyon tömören leírja, hogy mi ez az adott csomag. Az utána következő rész pedig a hosszú leírás ami gyakran több részből áll a tagolást az részek közötti . jelöli. Na most ezeket ki kell szedni innen egy PO fájlba, ami már speciális eszközt igényel. így nyer olyan formát amit már a launchpad is kezelni tud Az eredeti megoldás nem volt jó, mert úgy írta bele a PO fájlba a szövegeket, hogy nem volt azonosítható, hogy melyik szöveg melyik csomaghoz tartozik, így pedig 30000 szöveg esetén nem igazán tudja az ember, hogy hol is van. 183496 - az ugye nem valami értelmes dolog mert azt jelölte, hogy az adott szöveg a Packages fájl hányadik sorában van Ezen probléma megoldására átírtuk az eredeti eszközt, ami egy utófeldolgozó program után hasznos információval töltötte fel a megjegyzés mezőket. Az utófeldolgozó program szerepe az, hogy beazonosítja azt, hogy az adott szöveg melyik csomaghoz, csomagokhoz tartozik és azt, hogy rövid vagy hosszú leírás-e. Ugye, hogy így már sokkal egyszerűbben kitalálja az ember fia, hogy mit akar lefordítani? Szóval így már a Launchpadon is azonosítható egy-egy szöveg, bár ez még mindig nem volt elég nekünk, valami jobb kellett. nézzük a végeredményt http://bazaar.launchpad.net/~mvo/ddtp-ubuntu/ddtp-ubuntu2/annotate/head%3A/hu.po elég tróger szegény launchpad, mindig timeout-ol mindegy a lényeg a következő a PO fájlban, minden szöveg előtt szerepel, hogy melyik csomagokhoz trartozik valahogy így: #: Package: abiword és egy ilyesmi is #. summary vagy éppen #. description ezek párosításából tudható, hogy melyik csomag rövid/hosszú leírását fordítod [SLIDE 5] Nem mellékesen szeretném bemutatni nektek legnagyobb szövetségesünket Michael Vogt kollégáról, aki a Canonical színeiben tolja előre a szabad szoftverek szekerét. Ő az apt, synaptic, gdebi, gnome-app-install, software-center programok atyja, szóval elég sok köze van a csomagkezelés témához. Sikerült vele elég jó kapcsolatot kialakítani, így hétköznaponként elég sok problémát el lehet vele intéztetni, mivel ő kezeli a ddtp-ubuntu Launchpad projekt dolgait is, szóval meg kell becsülni, hogy ilyen emberre bukkantunk. :) igazi kincs, szóval becsüljétek meg ha egyszer beszéltek vele No de mielőtt továbbmennénk, tudni kell, hogy a nightmonkey két részre van bontva. Van egy backend és egy frontendi része. A backend nemes egyszerűséggel azzal foglalkozik, hogy a frontendnek legyen mit megjeleníteni. A frontend pedig remélhetőleg egy mindenkinek tetsző formában mutatja meg az adatokat, plusz mindenféle szűrési feltételeket ad. Lássuk akkor a felhasznált technológiákat, amiket a háttérrendszeren használunk. [SLIDE 6] A Launhpad nagy előnye, hogy lehet rajta fordítani, szépen lineárisan. Ezt sokan ismeritek akik fordítottatok már rajta. kelemengabor is beszélt róla eleget A Lanuchpad nagy hátránya, hogy csak lineárisan lehet rajta fordítani, szóval tesz magasról arra, hogy nincsenek egymás mellett az összetartozó csomagleírások. Sebaj, ezért vagyunk mi! Sajna a Launchpad fejlesztők mohók voltak és gyorsítottak az PO-k exportálásán és ennek eredménye lett egy csinos kis hiba, miszerint az exportált PO fájlban a szövegek sorrendje nem ugyanaz, mint a neten. Pl: Netes sorrend 4,5,6,7 exportálva lehet 4,7,5,6. Ez azért gond, mert nem lehet szépen URL-lel hivatkozni egy szövegrészre. Ez mai napig egy nyitott bug, bár állítólag foglalkoznak vele. Engem meg az őrületbe kerget(ett). Szerencsére megkerülhető a dolog, ugyanis Launchpadon lehet keresni egy-egy szövegrészre és ez alapján adja ki őket fordításra. Ezt a megoldást választottuk, meglehetősen pontosan tudjuk megkeresni a PO-ban szereplő szöveget a Launchpad felületén. Egyszerű metódus van rá, vesszük a szöveg első sorát ( első \n jelig) és erre keresünk rá. [SLIDE 7] pörgünk nem baj? Másik nagy kedvencem a bzr, főleg mióta a Launchpad képes arra, hogy bzr exportálja a fordításokat, méghozzá automatikusan, így nem kell kattingatni, meg emailben turkálni a PO fájlokért. Ez is hosszas küzdelem árán lett elérhető, de már ezzel sem kell nagyon foglalkozni. Lényeg a lényeg, bármilyen változás van a fordításokban, a bzr minden nap olyan 6 óra körül beküldi a változásokat egy bzr branchnbe. A backend pedig minden nap 8 óra körül kiveszi a frissítéseket, hogy új adatokat gyártson. Jól látjátok itt van hagyva egy 2 órás biztonsági késleltetés, hogyha véletlenül a Launchpad kése a frissítéssel, remélhetőleg akkor se az előző napi anyagod dolgozzuk fel. [SLIDE 8] Akkor most jön a varázslat. A nightmonkey backendje egy véleményem szerint rondán, (de finoman = Chokito) megírt Java program. Lényegében annyit végez, hogy a beadott PO fájlt feldolgozza. Mit is takar ez: egy csomaghoz tartozó csomagleírások összeszedése a fájlból, statisztika készítése a leírásokról és a csomagról is, keresőkifejezés elkészítése a csomagleíráshoz (ez kell ahhoz, hogy a Launchpadon is megt aláljuk), popcon érték rendelése a csomaghoz (a csomag népszerűsége a popcon). A Java, mint írtam a diákon egy egyszerűen felfogható nyelv, jól debuggolható és bár tévhitek szerint memóriaéhes, szerintem nem érdemes foglalkozni ilyesmivel amikor egy universe tároló po fájlja alapból is elég nagy. Ezt a jó sok információt minden nyelven és tárolóban elkészítjük és betoljuk egy SQLite adatbázisba. Erre pedig azért esett a választás, mivel tapasztalataink szerint a feladathoz pontosan elég gyors és ráadásul nem kell üzemeltetni. A szerver nem omlik össze, mivel nincs szerver, az adatbázist egy program kezeli, kifejezetten gyorsan és csak akkor foglal helyet, amikor használja is valaki az adatbázist, ugye, hogy nem kell ide szerver? :) Térjünk át akkor a frontendre. Térjünk át akkor a frontendre. [SLIDE 9] na így Az itt alkalmazott technikák valakinek biztosan ismerősek, de ellenkező esetben is könnyen megtanulhatóak. már ha tud programozni az ember fia A PHP az eléggé alap dolog, senkinek nem kell bemutatni. Ez működteti a megjelenítést, szépen, megbízatóan és fő erénye, hogy dinamikusan. lássuk azért a nagy őt is: http://nightmonkey.ubuntu.hu/ szép nem? Azért a PHP-t is megbonyolítottuk kicsit, mivel rengeteg keretrendszer létezik hozzá, mi a Code Igniter-t választottuk. Azért jó ez, mert követi az MVC (Model - View - Controller) magyarul a Modell - Nézet - Irányító szemléletet. Ha absztrakt módon nézünk egy weboldalt akkor valahogy így lehet felépíteni. Van a modell ami az adatokat tárolja, semmi más feladata nincsen. Van az irányító ami a logikát takarja, azaz a sima adatokból mondjuk megjeleníthető adatokat varázsol, végül van a nézet aminek a megjelenítés a feladata. Remélem kellően bonyolult, mert aki majd belenéz a forráskódba a látni fogja, hogy nem az. tudom száraz ez kicsit, de okos dolog Még egy PHP-s dolgot használunk ez pedig a Smarty. Ez egy angolosan szólva template engine, ami tökéletesen illeszkedik a nézet részünkbe, ezt használjuk az adatok megjelenítéséhez. És, hogy miért is ilyen bonyolult ez a dolog? Mert így elegendő egy darab index.php fájlt elérhetővé tennünk, a képekkel és CSS fájlokkal együtt. Az index nem tud mást csak, hogy hová van telepítve, de ez a hely már nem olvasható csak a szerver által, azaz a felhasználók számára nem olvasható, ezáltal biztonságban vannak a kritikus elemek. A vége felé közeledve nézzük meg, hogy mik a tervek a nightmonkey jövőjét illetőleg, valamint, hogy a kedvet érző, lelkes emberek hol tudnak bekapcsolódni. remélem lesznek eg kell említeni, hogy a felület teljesen lokalizálható, ez php-ben van szépen megoldva. A fordítás maga launchpadon történik, minden reggel 8-kor amikor az új PO fájlok is jönnek, letöltjük bzr-ből a friss nightmonkey fordításokat is, így naponta javul(hat) a felület lokalizációja. igyekeztünk automatizálni amennyire csak lehet [SLIDE 10] Elsősorban szeretnék kialakítani egy statisztikai részt, ahol látható lenne, hogy az idő előre haladtával hogyan alakul a lefordított szövegeke száma az egyes nyelvek és tárolók szerint. kicsit jobb lenne, mint az száraz számadat Egyéb igények még nem merültek fel, de jöhetnek és foglalkozni kell velük Egyelőre csak az Ubuntu használja a projektet, de elég flexibilis a projekt ahhoz, hogy bizonyos egyszerű feltételek teljesülése esetén könnyen használhassa egy-egy új disztribúció. [SLIDE 11] itt a vége És akkor hol jössz TE a képbe. Lenne még mit implementálni, átírni, újragondolni. Senkit nem hagyok egyedül, én is csak örülnék annak ha valaki csatlakozna és együtt találnánk ki az új és jó dolgokat. Ezzel együtt jár az is, hogy az ember hamar hivatalosan is Ubuntu member lehet, megismerik a nevét és határ a csillagos ég. (ez utóbbi még nincs meg, de a többi igen :P) Tesztelés, hibakeresés. Ennyi link és adat mellett nem lehetünk biztosak abban, hogy a rendszer minden esetben pontosan dolgozik. Nem tudok pontos számot mondani arról, hogy a linkek mindig jó helyre mutatnak, hogy ami lefordítottként van számon tartva, az igaz-e és sorolhatnál. Valamint némi JUnit teszt sem ártana a backendnek, szóval aki érez magában indíttatást, azt ne tartsa vissza a szégyenlősség, mert itt nincs fizetés megvonás, lehurrogás. köszönöm a figyelmet remélem kellően összezavaró voltam kérdéseket szerintem később de az email címem megtaláljátok a launchpad profilomban igen sianis néven Köszönöm a figyelmet, fél perc és jön a bugos előadás is