RSS Feed

‘prog’ Category

  1. Jelszó beviteli mező YUI DataTable-höz

    February 11, 2009 by nyu

    Az utóbbi időben egyre többet foglalkozom a YAHOO User Interface-szel, annak is főként a DataTable komponensével. Hogy egy pici kedvet csináljak másoknak is a YUI-val való ismerkedéshez, bemutatok egy egyszerű módszert a DataTable cella-szerkesztőinek bővítésére.

    (more…)


  2. Script.aculo.us slider mod

    August 29, 2008 by nyu

    Egész jóra sikerült a script.aculo.us-os slider control, annyi a baj vele, hogy nem tudja kezelni azt az esetet, amikor két “pöcök” van a “pályán” és az egyiket rátolom a másikra. Ilyenkor az első probléma az, hogy átfedésbe kerülnek, emiatt az egyik “pöcök” elérhetetlenné válik. Ha ezt sikerül kiküszöbölni, akkor meg az a gond, hogy találkozáskor nem ugyanazt az értéket fogják visszaadni.

    Ez így nehezen érthető, de itt egy példa, ami az eredeti slider control-t használja: PÉLDA. Ezen jól látható, hogy egzmásra tolható a két pöcök, ugyanazt az értéket adják, de ilyenkor az alul levőt nem lehet közvetlenül elérni, el kell cibálni a fölül levőt.

    A módosított verzióban a két pöcök már csak egymás mellé képes beállni, ilyenkor a visszaadott értékük azonos. Ez már jól használható intervallum megadásokra: PÉLDA

    A módosított slider control letölthető innen. Az 1.8.1-es script.aculo.us lib-et használtam fel alapnak, ebbe hackeltem bele Gerd Riesselmann módosítását, amit itt tett közzé még az 1.6-os script.aculo.us lib-hez.


  3. PHP Debug Xdebug-gal és PDT-vel (Eclipse)

    June 13, 2008 by nyu

    Egy kis bevezető, aztán jön egy részletesebb leírás, hogyan is lehet belőni a címben vázolt környezetet.

    A PDT megjelenése elég sok változást hozott a PHP fejlesztők életében. Az első verzió ugyan csak arra volt jó, hogy Eclipse környezetben is lehetett “normálisan” PHP kódot írni. Az igazi áttörés akkor történt, amikor megjelent az első olyan verzió, ami már teljesen támogatta a Zend Debugger-es remote debugging-ot. (Böngészőből indítható debug-ot.) Eddig ezt csak a – fizetős Zend Platform részévé váló, majd onnan kikerülő Zend Debugger-rel és a szintén fizetős – Zend Development Studio keretén belül lehetett megoldani. Úgy tűnik ez most már lassan a múlt homályába vész és végre lesz egy teljes értékű, ingyenes PHP debug megoldás a jól működő ingyenes PHP IDE (PDT) mellé… illetve úgy tűnik már van is!

    Az első XDebug-ot támogató PDT-vel az volt a baj, hogy valami miatt lefogta az egész processzort és eléggé hektikusan működött: néha nem indult el a debug, néha ehhez újra kellett indítani az egész Eclipse-et. Emiatt hanyagoltam is az XDebug-ot, helyette bevetettem az időközben megint ingyenesen elérhető Zend Debugger-t.

    Pár napja láttam, hogy a PDT-ből kiadták az 1.0.3-as verziót és nem olyan régen megjelent az XDebug 2.0.3-as verziója is. Hirtelen ötlettől vezérelve be is frissítettem őket (biztos nem véltlen, hogy 3-as végződik mindkét verzió, ugye…) és meglepődve tapasztaltam, hogy az XDebug procit felzabáló hajlama eltűnt, a PDT szépen tudja indítani a debug session-öket, minden flottul működik. Na ezen felbuzdulva gyorsan leírtam, hogyan is jutottam el ebbe az idilli állapotba:

    Alapfeltevés: Van egy Apache alá installált PHP, fut az Eclipse-ben a PDT. Mindkét előfeltételre rengeteg doksival szolgál a Googel keresője.

    1. Fel kell rakni az XDebug bővítményt PHP alá. Ennek egyik legegyszerűbb módja (ha Linux vagy MacOSX alatt vagyunk), hogy a PECL csomagkezelővel szépen befordíttatjuk. Erről van egy szép doksi az XDebug oldalán is, de röviden ezt kell begépelni a konzolban:
      pecl install xdebug

      Win alatt van bináris verzió, amit csak be kell másolni a PHP könyvtárába.

    2. A php.ini-ben be kell olvastatni a lefordított xdebug modult és be kell kapcsolni a remote debug fícsört:
      zend_extension=/Library/PHP5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so
      xdebug.remote_enable=1

      Windows alatt is ez kell, csak .dll a fájl kiterjesztése.

    3. Eclipse-ben be kell állítani egy debug konfigurációt, ehhez kell, hogy legyen egy PHP projekt, amire majd tudunk hivatkozni.
      • A bal fölül levő “New launch configuration”-ra kell kattintani, majd a megjelenő ablakban a Server fülön beállítani a következőket:
        • Server Debugger: XDebug
        • File: belapozni egy PHP projekten belül egy php fájlt, ami az indulási oldala lesz ennek az egész indítási konfignak
        • Auto Generate: ellenőrizni, hogy jó url-t rakott-e össze a PDT, ha nem, akkor kiszedni a pipát és kézzel javítani!
      • Advanced fülön:
        1. Start Debug from: beírni ide is azt az url-t, amit az előző fülön, ha vlami miatt mégsem az jelenne meg.
        2. Pipát rakj a “Continue Debug from This Page” elé, így a PDT nem bontja a kapcsolatot az XDebug-gal a megadott url letöltése után.
      • Common fül:
        1. Itt csak azt érdemes bepipálni, hogy a most összerakott launch config szerepljen-e a debug fav.-ok között.

    Ezek után mehet egy Apply és ha minden jó, akkor a Debug gombra kattintva a PDT elindítja az Eclipse-ben beállított böngészőt a megadott url-lel (kiegészítve az XDebug session indításával).
    Helyezz el breakpointokat és láss csodát, a következő oldal letöltésekor (a böngészőben lehet nyomkodni a linkeket, tölteni az újabb oldalakat) a PDT életre fog kelni, ha a program futása eléri a beállított breakpointot.

    Innentől kezdve a PDT debug perspektívájában lehet nézelődni: látszódik a hívási verem, az elérhető változók, sőt a változók értékei módosíthatóak is!

    Mindenkinek jó szórakozást hozzá! :)


  4. Megújult a koles.hu (jöttek a tehenek…)

    April 14, 2008 by nyu

    Hát nem volt nehéz dolgom, hogy egy jobb nyitóoldalt csináljak a saját domainemnek, de legalább eltartott egy darabig. Persze ezt is, mint a blogot is folyamatosan farigcsálom, javítgatom amint van pár szabad órám.

    Akinek gyanúsan ismerős a design, annak megsúgom, hogy nem teljesen eredeti az ötlet, hasonló menü van a mootools.net-en is. Az ott látható harmonika menüt szabtam át egy kicsit.

    Valami hasonló megoldáson gondolkodom a fotógalériák nyitóoldalára is, de ahhoz megint kell egy nagyobb mennyiségű szabadidő. :/

    Egyébként ez a harmonika menü egy nagyon jó ötlet, szeretnék eljátszadozni vele egy picit. Kokrét “Accordion menu” javascript osztállyal még nem futottam össze, igaz főleg csak a mootools oldalán keresgéltem. Van egy másik igéretes projekt, ami kifejezetten csak mootools-ra épülő effektek gyártásával foglalkozik. Találó néven: moo.fx. Viszont ebben sincs kész osztály erre. Mondjuk nem túl bonyolult megírni a kódot az egéreseményekre, nagyjából 20 sor az egész.

    Szóval következő mini-projektem lesz az accordion menu JS osztály összeheggesztése, amit kirakok ide az oldalra egy kisebb tutoriallal megtámogatva.

    Stay tuned!


  5. WordPress magyarítás 64 bites szerveren 2

    November 15, 2007 by nyu

    Sikerült újabb infókat szereznem erről a problémáról. Úgy tűnik ebben a support bejegyzésben leírt patch és némi Trac olvasgatás után megvan a megoldás 32 és 64 bites szerverekre. A következő kódrészletre cseréljétek ki a wp-includes/gettext.php 105-124 sorait:

    		// Caching can be turned off
    		$this->enable_cache = $enable_cache;
    
    		// $MAGIC1 = (int)0x950412de;
    		//bug in PHP 5.0.2
    		//see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
    		$MAGIC1 = (int) - 1794895138;
    		// $MAGIC2 = (int)0xde120495; //bug
    		$MAGIC2 = (int) - 569244523;
    		// 64-bit fix
    		$MAGIC3 = (int) 2500072158;
    
    		$this->STREAM = $Reader;
    		$magic = $this->readint();
    
    		// to make sure it works for 64-bit platforms
    		if ($magic == $MAGIC1 || $magic == $MAGIC3) {
    			$this->BYTEORDER = 0;
    		} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
    			$this->BYTEORDER = 1;
    		} else {
    			$this->error = 1; // not MO file
    			return false;
    		}

    Biztos, ami biztos alapon, ide:gettext.php rakom a patchelt fájt is, csak írjátok felül a wp-includes-ban levőt.


  6. WordPress magyarítás 64 bites szerveren

    November 14, 2007 by nyu

    Valószínűleg nem én vagyok az egyetlen, akinél nem működött elsőre a WordPress magyarítás. Először is rövid google keresgélés után Tom blogján ráakadtam a 2.3.1-es wordpress magyarítására. Az ott szereplő kis leírás alapján a dolog abszolút egyszerű: be kell másolni egy fájlt és meg kell adni a wp-config.php-ban, hogy ezt olvassa fel a WordPress. Hát akkor hajrá, és hát a mostani bejegyzés apropójából már kitalálható, hogy nem működött.

    Elkezdtem debug-olni. Első gyanúm, hogy valamit elcsesztem, tehát újra leellenőriztem minden telepítési lépést, de semmi. Aztán olvasgatni kezdtem a WordPress lokalizációs lehetőségeiről. Kiderült, hogy a népszerű gettext-et használja a fordítások kezelésére. Átnéztem a szerveren futó PHP-t, amin van gettext bővítmény, működik is. Akkor mi lehet?

    Következő lépésként felraktam a saját gépemre is egy WordPress-t, beraktam a fordítást és minden ment szépen. Itt derült ki számomra, hogy nem is kell, hogy a PHP rendelkezzen a gettext bővítménnyel, mivel a WordPress egy PHP-ban megírt osztályt használ ennek kiváltására: PHP-gettext. Akkor elő a debuggerrel, nézzük hogyan jut el a fordításban szereplő szöveg a felhasználóhoz. Hosszú-hosszú hibakeresés következett, de végül minden ötletem kudarcba fulladt, a szerveren lévő WordPress sehogy sem jeleníti meg a fordítást.

    Ekkor kezdtem a fordítási fájlt feldolgozó függvényekre koncentrálni, mivel az tisztán látszódott, hogy a fájl bekerül a memóriába, de a szövegeket a PHP-gettext nem tudja kiszedni. (A fordításokat tartalmazó fájl bináris.) Mivel nem akartam teljesen megérteni a PHP-gettext bináris feldolgozó eljárásait, megint jött a google és eljutottam a WordPress Trac changelog-jába, ahol a 4003-as revízióban érdekes dologra bukkantam. Ezek szerint a 64 bites gépeken nem tudja rendesen felolvasni a fordítási fájlt a WordPress-ben levő PHP-gettext. Elvileg áttértek az 1.07-es verzióra, ami ezt a hibát is javítaná, mégsem működik. Ekkor döntöttem úgy, hogy nem szarozok, kézzel befrissítem a PHP-gettext-et és CSODA történt! Megjelent a magyar fordítás!

    Tehát aki hasonlók miatt szenved:

    1. töltsd le a PHP-gettext legújabb verzióját
    2. tömörítsd ki
    3. lépj fel a szerverre, készíts biztonsági másolatot a wp-includes/gettext.php és a wp-includes/streams.php-ról
    4. a kitömörített könyvtárból másold át a szerverre a gettext.php-t és a streams.php-t a wp-includes könyvtárba, felülírva a régieket
    5. ha még nem csináltad meg a nyelvi fájl telepítési lépéseket, akkor tedd meg
    6. kész vagy!

    Nem tudom, hogy 100%-ban bugmentes-e a megoldás, de rövid tesztelés során, csak az admin felületen a Dashboard-on tapasztaltam némi hibát. Máshol minden ok. Elkezdem pedzegetni a kérdést a WordPress fejlesztőinél, kíváncsi vagyok mire jutok.