ugrás a tartalomhoz

Archívum - 137651 - Fórum téma

június 21

PHP - kivételek szerializálása

inf · 2012. Jún. 21. (Cs), 06.08
Üdv.

Nem akartam ennek külön blog bejegyzést, mert annyira kis dolog, úgyhogy ide teszem be.

class Clean_Exception extends Exception {

    public function __sleep() {
        return array_keys(get_object_vars($this));
    }

}
Ha sima Exception-t akarunk szerializálni, vagy annak valami leszármazottját, akkor az egész stack trace-t is szerializálja a php az összes benne lévő változóval. Ez vicces dolgokat tud okozni, mondjuk amikor a munkamenet kezelő objektumok meg hasonlók is belekerülnek...

Egyébként mindez űrlap validáláshoz kell nekem. Jelenleg úgy oldom meg, hogy a validator-tól el lehet kérni egy kivétel példányt, ha hiba van, és utána eldobni, vagy menteni, attól függően, hogy mi a szitu... Felhasználóbarátabb űrlapoknál így vissza lehet küldeni az eredeti űrlaphoz munkamenet változókban a hiba okát. Azért ezt a módszert választottam, mert működik rá az automatikus kiegészítés, és lehet nézni a típusokat. Ha mondjuk típuskóddal, vagy bármi mással küldeném vissza a hiba okát, az sokkal nehezebben kezelhető lenne.
 ■

Kódkiegészítés

Pepita · 2012. Jún. 21. (Cs), 01.24
Sziasztok!

Olyan gondom van, hogy egy számomra nagyon tetsző framework-ot (CodeIgniter 2.1.0) és - szerintem - nagyon jó szerkesztőt (Komodo Edit 6) használok, de nincs kódkiegészítésem a CI "gyári" osztályaihoz és az általam írtakhoz sem. Ez nekem elég nagy probléma, úgy gyorsaságban, mint szintaktikai hibalehetőségként.

Próbáltam a Komodo-t "ráuszítani" a használt könyvtárakra (még egyenként is, bár elvileg az alkönyvtárakat is felveszi), de a plafon - jelenleg - az, hogy egy-egy helpernél működik. Ezek nem definiálnak osztályt, csak függvényeket.

Gondolom, a CI load->library(...) osztály betöltése/kezelése körül van valami trükk, amit a Komodo "nem ért". Annyira még nem bengéztem át a kódják, hogy rájönnék. Illetve valószínűleg nem is tudok eleget hozzá, legalábbis tartok tőle. (Kicsit még mindig idegen az interpreteres OOP.) A saját doksijában erre nem térnek ki, csak kb. annyi van, hogy "ha betartod ezeket és ezeket a név/fájlnév/könyvtár szabályokat, akkor hú de jó neked, használhatod a loadert és csak egyszer fogja betölteni stb."

Letöltöttem már a Komodo 7-et és a CI-ből is van már 2.1.1, de egyelőre nincs időm azokkal kísérletezni, de ha valaki azt mondaná, hogy akkor megoldódik a probléma, akkor a következő projektre már úgy készülnék.

Megköszönök minden észrevételt, elsősorban azok válaszát várom, akik használják/használták a fent említett szoftvereket.

Üdv. Pepita
 ■

június 20

Kérdés: PHP kód "megvédése" hogyan?

Zsolesz74 · 2012. Jún. 20. (Sze), 14.07
Sziasztok!

Egy olyan problémában kérném segítségeteket, hogy mi a teendő akkor, ha ha ügyfelem csak akkor hajlandó fizetni, ha a szerverére töltöm fel a kódokat, de sajnos félő, hogy egyszerűen lemásolja, s elfelejt fizetni. Sajnos a program nagy részét már feltöltöttem a szerverére, eddig ott tesztelték, de a programozója elszólta magát, hogy nagyon átlátható a kód, könnyű benne módosítani. Ezek után a többit a sajátomra töltöttem fel, ahol fut is jól, tesztelte is, de nem hajlandó fizetni, csak akkor, ha azt az Övére is feltöltöm. Olyan ötletet kérnék, ami vagy egy idő után "megsemmisíti" a kódokat, avagy úgy van becsomagolva, hogy az visszafejthetetlen. (md5 hash stb-t ismerem, nekem sem sok idő visszafordítani).
A jótanácsokat nem kérem, hogy szerződés meg ilyesmi, nincs pénzem ügyvédre, hogy pereskedjek.
Hasznos, gyakorlati tanácsot várnék.

Üdv:
Zsolesz
 ■

Kép igazítás probléma

Karvaly84 · 2012. Jún. 20. (Sze), 06.02
Sziasztok!

Valószínűleg én vagyok az analfabéta és mivel angolul nem tudtam megfogalmazni a problémám, nem tudtam érdemi találatot kicsikarni a keresőből, így felteszem a kérdést:

Lényegében van egy konténer div 336 pixel széles belső térrel. 360(padding: 0 12px);

Ebbe a konténerbe pakolnék 7 darab 48x48-as képet ami együtt elvileg pont 336 pixel;

A Firebug-al nem mentem sokra, viszont egy outline beállításával a képeken látszik, hogy a képek között kb 2 pixel széles tér van, ami miatt az utolsó kép lecsúszik új sorba;

június 19

Liskov substitution principle

eddig bírtam szó nélkül · 2012. Jún. 19. (K), 07.45
Ezen már régóta töröm a fejem: OK, ezek nem kőbe vésett szabályok, csak elvek, de ha ragaszkodom a S.O.L.I.D. L betűjének betartásához, akkor mi értelme a felüldefiniálható metódusoknak az OO nyelvekben? Hiszen ennek épp az a lényege, hogy az adott metódus működését megváltoztatom. Nem?
Mi az amit rosszul értelmezek?

Valahol erről már beszéltem valakivel, de nem találom, a memóriám meg... :-(

--------------------------------------------

(Itt találtam egy magyar leírást. Úgy látszik, az angolom hiányosabb, mint képzeltem. És a felfogóképességem is. Továbbra sem értem, de attól tartok, ezek után hiába próbálja bárki elmagyarázni, nem fogom megérteni. :-(
 ■

június 18

Include és a változók

eddig bírtam szó nélkül · 2012. Jún. 18. (H), 07.28
Másik fórumon került szóba, de... Na mindegy, szóval kíváncsi lennék a ti véleményetekre.
Adott egy PHP program, ami itt-ott include-dal betölt egy kódrészletet és az így betöltött részben az include-ot kiadó környezet változóit használja.

$x=1;
include "x.php"
...
és az x.php felhasználja, esetleg átírja a $x értékét.
Nekem szokás szerint, eléggé... khm... "sarkos" véleményem van a dologról. :-)
Szerintetek ez mennyire kulturált megoldás?
Én egyetlen esetet tudok elképzelni, amikor elfogadhatónak tartom: ha template-ként PHP-t használok. Bár ott is vannak kétségeim.
 ■

június 17

C-ben char tömböt hogyan adok vissza egy függvényben?

morocztamas · 2012. Jún. 17. (V), 09.18
char* TopOrBottom (char character, int width) {
    char str[width];
    str[0] = '*';
    int i = 1;
    for (i = 1; i < width - 1; ++i) {
        str[i] = character;
    }
    str[width - 1] = '*';
    str[width] = 0;
    return str;
}
user@pc:~/dev/c/pprint$ gcc -Wall -W -Werror pprint.c -o pprint
pprint.c: In function ‘TopOrBottom’:
pprint.c:22:5: error: function returns address of local variable [-Werror]
cc1: all warnings being treated as errors
 ■

június 16

iframe helyet 'a' tag?

mahoo · 2012. Jún. 16. (Szo), 18.52
Sziasztok, azt szeretném kérdezni, hogy az 'a' tag-nek megadott 'href' attribútum ami egy php fájlra mutat képes e megvalósítani azt amit egy 'iframe'-mel lehet, azaz pl. egy komplett űrlapot ágyazzak be egy külső weboldalba.

Iframe-mel megy, de az nem mindenhol engedélyezett, ezért szeretném 'a' tag-gel. Ebben az esetben, hogyan kell eljárni? Köszönöm!
 ■

június 15

Bekezdés eleji évszámnál Markdown sajátosság kikerülése?

Wabbitseason · 2012. Jún. 15. (P), 09.44
Markdownban számozott felsorolást úgy definiálunk, hogy a bekezdést számjeggyel kezdjük, amit egy pont karakter követ -- sajnos éppen úgy, ahogyan a magyar helyesírás szerint az évszámokat írjuk.

Ezért nem nyilvánvaló, hogy mi a legjobb módja Markdown használatakor az olyan bekezdés írásának, ami évszámmal kezdődik.

Milyen megoldást javasolnátok erre azon kívül, hogy átfogalmazzuk az érintett bekezdést?
 ■

Apache, symlink -> 403

Karvaly84 · 2012. Jún. 15. (P), 07.26
Helló guruk!

Elkövettem egy olyan manővert, hogy Apache kiszolgálón használatba vettem az userdir modul kiegészítést. Létre hoztam a public_html nevű mappát a kívánt helyen és le is teszteltem egy index.html-el amit fel is hozott.

Na most a home mappámon belül van egy Projects nevű mappa amiben vannak webes projektek, ez egy szinten van a public_html mappával. A Projects mappából szeretnék pár almappát belinkelni a public_html-be, de akárhogy konfigolom az Apache-ot 403-at kapok válsz gyanánt. Már próbáltam a FollowSymLinks opciót, de semmi. Nem indexeli amit belinkelek, ha pedig el akarom érni 403-at dob.

Lehet, hogy komplett mappát nem lehet linkelni???

Jelenleg vissza álltam az eredeti konfigurációra:

karvaly@ubuntu:~$ cat /etc/apache2/mods-enabled/userdir.conf
<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

karvaly@ubuntu:~$
Nem vagyok Apache guru sajnos, aki segít annak megköszönöm.
 ■