Archive for 'web-dev'

Wp Post Thumbnail 0.2b Loading.. bug fix

Finaly I found all the bugs in the Wordpress Post Thumbnail plugin. This fixed wppt.php file solves the famous “Loading.. ” problem, but only works under IIS hosted Wordpress blogs. If your hosting server or local development server is IIS (windows webserver) based, you should check this fix!

Download here the fixed file: wppt.php.zip

Please note:
This is NOT a crossplatform fix, only works under IIS!

Instructions:
1. Replace the original wppt.php with the unarchived.
2. If  the wp-content/uploads/wp-post-thumbnail/ directory doesn’t exist, create it!
3. Enjoy the fixed plugin!

If this bugfix saved your life or something like that, please send me some beer or donate (on the sidebar)!

Thank you!

Gmail Apps Php Mailer SMTP beállítások

Ezt a postot részben magamnak ajánlom, mert mindig elfelejtem valamelyik paramétert, részben pedig azoknak a sorstársaknak, akik a Google Apps / Gmail fiókjuk nevében akarnak emailt küldeni php mailer libraryvel.

$mail->IsSMTP();
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = "username@gmail.com";
$mail->Password = "password";

Flex: ViewStack select by id

Flashben programozni szívás, Flexben is. Ezzel a problémával több mint egy órát tököltem, ezért szentelek neki egy gyors kis blogbejegyzést..

Van egy ViewStack komponensünk (MyViewStack), ebben pedig szépen elnevezett gyermek elemek. Elnevezés alatt azt értem, hogy mindegyiknek van saját “id”-je. Szeretnénk, hogy ne csak hagyományos módon az index alapján  ( MyViewStack.selectedIndex=1) lehessen elérni, hanem a “Stack” id-je alapján, amit stringként közlünk a megjelenítő metódussal.

A metódus adott: MyViewStack.selectedChild=, viszont a bemenet nyilván nem lehet egy sima változónév, Container-re kell hivatkoznunk. Naív módon próbálkoztam ilyen flashes közhelyekkel: this[target] és társai..

Persze nem ment. Mivel Container kellett neki minden áron, beimportáltam az  mx.core.Container csomagot és rájöttem, hogy mennyire  szépen meg lehet ezek után oldani a problémát:

import mx.core.Container;
private function showTarget(target:String) : void
{
    MyViewStack.selectedChild = Container(MyViewStack.getChildByName(target)) ;
}

AS3,Flex: rest paraméter trükk

Sok modern programozási nyelvben, így AS3-ban is használhatjuk az úgynevezett rest paramétert függvények definiálásakor. Nagyon hasznos dolog, mert nem kell előre gondolnunk a lehetséges paraméterekre, tisztább kód hozható létre vele, mindössze egy tömböt kell lekezelnünk a függvényen belül, amiben az összes “további” paraméter benne van. Például:


function elemLista(...items):void{
for( var i:int = 0; i < items.length; i++){
trace("Elem: ", items[i]);
}
}

elemLista(”A”,”B”,”C”, 1, 2, 3);

Kimenet:
Elem: A
Elem: B
Elem: C
Elem: 1
Elem: 2
Elem: 3

Nagyon hasznos dolog, amint látható én gyakran használom.
Egy moduláris program interfészén dolgoztam, amikor szembejött egy probléma ezzel kapcsolatban. Mi van, ha egy tömböt akarok így, végtelen paraméterszerűen átadni a végtelenszámú argumentumot fogadó függvénynek?!
Nos, ha a tömböt közvetlenül adom át: elemLista(tomb:Array) az nem fog menni.
Viszont egy kis objektumorientált trükközéssel megoldható a probléma. Használjuk az apply metódust. Hülyén hangzik, de az OO programozásban minden objektum, így a függvényhívást, vagyis a függvényt magát is tudjuk objektumként kezelni. A következőt kell tennünk:


function elemLista(...items):void{
for( var i:int = 0; i < items.length; i++){
trace("Elem: ", items[i]);
}
}

var lista:Array = new Array(”A”,”B”,”C”, 1, 2, 3);
elemLista.apply(this,lista);

Kimenet:
Elem: A
Elem: B
Elem: C
Elem: 1
Elem: 2
Elem: 3

Papaam! Már működik is. Nos, nekem ez egy óra kutakodásba került, remélem a kedves olvasó gyorsabban megtalálja

Charles - Flex/Air XML RPC debug

Államvizsgáztam, meg van a diplomám, így kicsit több időm van új dolgok kipróbálására és a blog írására is. Már hetekkel ezelőtt rákattantam az Adobe Air+Flex kombóra, de fejleszteni csak most kezdtem el benne. Rendkívül zavart, hogy a php webes alkalmazásom és az Adobe Air kiliensem közti XML alapú kommunikációt nem láthatom, nem tudom debugolni. 
Read more

Wordpress 2.7 - Error 500

Tegnap szenvedtem egy sort a saját wordpress 2.5 blogom migrálásával. A rettegett 500-as hiba nálam is előjött egészen rémületes arcát mutatva. A honlap és az admin is jól működött a fájlok cseréje és az adatbázis updatelése után, de amint az adminon postolni akartam, pluginokat aktivizálni, bármit jóváhagyni, azonnal 500-as hibával elszállt a lap.


Read more

Saját egérmutató (CSS)

Ajaxos alkalmazásoknál gyakran használok más egérmutatókat, mert sokszor egyértelműsítik mit lehet egy objektummal csinálni. Például drag n’ drop-olható elemeknél ezt a kurzort használom: cursor-openhand.png

CSS-ben ilyet elvileg nagyon egyszerűen definiálhatunk:

body{
cursor: move;
}

Firefox alatt szépen meg is jelenik a kezecske, de az Internet Explorer 6,7 és a Safari is egy nyilaskeresztet ;) produkál helyette.. Ez nem ébreszti fel usereinkben a “dragndrop” ösztönt (izraelita usereink pedig ijedtükben kikapcsolják a böngészőt :D ). A célunk az, hogy minden böngésző alatt a kezecske jelenjen meg.

Szükségünk lesz a megfelelő cursor bitmapre: openhand.cur

Másoljuk a css-el egyező mappába és írjuk át a css kódot:

body{
url(openhand.cur),move;
}

Lám, lám Safari barátunk szépen működik, a jó öreg IE pedig még mindig nem boldogul vele.. Hogy miért nem? Mert egy nagy rakás sz*r és nem képes követni a W3C szabványokat.. A trükk a következő:

Adjuk meg az abszolút hivatkozást is:

body{
url(openhand.cur),url(layout/openhand.cur),move;
}

Papaam és már megy is Firefox, Safari, Internet Explorer 6 és 7 alatt is!

Jobb egérkattintás letiltása minden böngészőben

Számos scriptet láttunk már, melyek különböző vagy akár több féle böngészőben is képesek voltak letiltani a helyi menüt. Erre általában a képek letöltése elleni “védelem” miatt van szükség.. Persze ez nem igazi megoldás, de nagyon sok 1.0-ás user bepánikol, ha nincs ott az a ‘Save As..’ menüpont a jobb kattintás hatására megjelenő helyi menüben.
Egy cég weboldalán pont az ilyen kategóriájú felhasználók ellen kellett védeni a látványterveket, ezért szükségem volt egy jó kis javascriptre..

Találtam is egy “szép” megoldást.. rövidke kód, try-catch-et használ a helyi menü letiltására. FF, IE és Safari alatt is működik, más böngészőm nincs fenn a gépen, de mivel a módszere a javascript “hibakezelője” maga, nem hiszem, hogy más, js képes böngészők ne támogatnák.

Gyakran használt Regexp-ek

Gyakran van szükség a felhasználók által bevitt adatok (pl. html form) ellenőrzésére. Erre rengeteg féle hatékony és kevésbé hatékony függvény áll rendelkezésre az egyes programozási nyelveken. Ezek használatától és hibáitól kímélnek meg minket a regular expression-ök, melyeket szinte minden nyelv értelmezni tud. Az alábbiakban pár általam gyakran használt regexp-et osztok meg veletek:

Magyar dátum formátum

(19[0-9]{2}|[2][0-9][0-9]{2})[/ -.](0?[1-9]|1[12])[/ -.](0?[1-9]|[12][0-9]|3[01])

Idő formátum

^([0-1][0-9]|[2][0-3]):([0-5][0-9])$

E-mail cím

^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.([a-zA-Z]{2,4})$

Jelszó

[0-9a-zA-Z]{6,32}

Javascript IE vs. domready Mootools

Megint egy kis IE-s szívás, hátha másnak is lesz/volt:

Ha HTML oldalunkon elhelyezünk bármilyen elemet id=”loaded”-al, akkor nem fog menni a Mootools-os domready event:

window.addEvent('domready', function() {});