Új hozzászólás Aktív témák

  • blacee

    csendes tag

    válasz Sk8erPeter #11799 üzenetére

    Sajnos semmi változás, különben már sűrűn köszöntem volna a segítséget! :)
    El nem tudom képzelni mi kell még neki...

    blacee

  • Louro

    őstag

    Sziasztok,

    nem vagyok teljesen kezdő, de azért segítségért fordulnék hozzátok.
    Amiről szó van. Van egy űrlap. Bekérek adatokat, amit egy fájlban tárolok el.
    Az űrlap első oszlopa egy sorszám - nem a bejegyzés sorszáma, szóval több sornak lehet ugyanaz a sorszáma.
    A gond az az, hogy a kiíratáskor szeretnék egy olyat írni, hogy van - tegyük fel - 10 táblázat. A 10 táblázatba pedig szétszedni az adott sorszámmal kitöltött űrlapok adatait.

    Pl:
    A fájl tartalma:
    1;alma;torta;hétfő;
    2;citrom;leves;csütörtök;
    4;fahéj;tejberizs;vasárnap;
    2;bors;pörkölt;kedd;
    3;sajt;torta;hétfő;
    2;krumpli;rakott krumpli;hétfő;

    ======================================

    A táblázatok nevei lennének a sorszámok (első adat) és az alattuk levő táblázatban jeleníteném meg a sorszám utáni 3 adatot soronként.

    Amit csináltam: a fájlt egy változóba betettem - eddig alap -, után explode-dal szétszedtem egy tömbbe soronként.
    De itt elakadtam, mert a foreach-et nem tudtam úgy megírni, hogy jó legyen. Próbáltam ciklussal, de nem ment. Nem tudom, hogy hogyan tudnám úgy szétszedni, hogy pl. a ciklus indexe a tömbelem első első karaktere legyen.

    Remélem sikerült érthetően megfogalmaznom. Adatbázissal még nem foglalkoztam, ezért nem abban "rögzítettem"/dolgoztam fel.

    Köszönöm előre is a segítségetek.

    [ Szerkesztve ]

    Mess with the best / Die like the rest

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz Louro #11802 üzenetére

    Kódoltam egy keveset, szerintem erre gondoltál: http://pastebin.com/mc8eJwfQ

    (Hiba lehet benne [Notepad teszt nélkül].)

    [ Szerkesztve ]

  • Louro

    őstag

    válasz Peter Kiss #11803 üzenetére

    Uh, osztállyal.... - kezdő programozó vagyok - erre nem is gondoltam. Átnézem a kódot, hogy értelmezzem is.

    Köszönöm a gyors megoldást.

    Mess with the best / Die like the rest

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz Louro #11804 üzenetére

    Lehet ilyet osztály nélkül is? :Y Ez is elég gagyi, mert pl. a parser-nek erős függése van, azt még fel kellene oldani, hogy ne legyen CSV fájlhoz kötve.

    Ha nem vagy jó kapcsolatban még a class-okkal, akkor vissza a startvonalra. :)

  • Sk8erPeter

    nagyúr

    válasz blacee #11801 üzenetére

    "Unknown package 'zoneinfo-europe'
    Nem találja szegényke. Ő ugyanis a vargalex.uw.hu -ról rántja le a csomagokat, és azok közt nincs."

    Ez azért furcsa, mert itt látom a listázásban a csomagot:

    zoneinfo-europe_2011n-1_ar71xx.ipk

    Szóval nem nagyon értem, miért nem találja. Más package source-t (mirrort) beállítva (akár ezt) sem működik ennek telepítése?

    ==========

    (#11805) Athlon64+ :
    "Lehet ilyet osztály nélkül is? :Y"
    Nyilván költői volt a kérdés, de mindent lehet procedurálisan is, semmi katasztrófa nem történik akkor sem (bár tudom, hogy szerinted aki nem csak és kizárólag OOP-ben kódol, az egy baromarcú), csak akkor elveszti az osztályok használatának rugalmasságát, a könnyebb kezelhetőséget, esetleg áttekinthetőbb kódot. De önmagában az, hogy OOP a kód, az nem garantálja az áttekinthetőséget, jó kódot, a gányolás elkerülését; ahogy ugyanígy az is igaz, hogy procedurálisan is lehet szép kódot írni.

    [ Szerkesztve ]

    Sk8erPeter

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz Sk8erPeter #11806 üzenetére

    Procedurálisan nem lehet szép kódot írni, mert minden lóg a levegőben (illetve a globális hipertérben). Ilyen esetekben maximum egy-egy függvény feladatát lehet a minimálisra szorítani, de rendszer nem lesz abból se. PHP esetében pedig még az is kihullik, hogy típusellenőrzést lehessen jól láthatóan végezni (kikötöda paraméter típusát a metódusok paraméterlistájában).
    Az OOP nem tudja garantálni a normális kódot, mivel nincs normálisan definiálva (lehet egyáltalán?), hogy mit is jelent az OOP (sokaknál kimerül a class-ok használatában, de ekkor van az, hogy class oriented lesz a design).

    És nem baromarcú, csak keveset tud.

  • cucka

    addikt

    válasz Peter Kiss #11807 üzenetére

    Az eredeti hozzászólásban írt, 20 sorban megoldható feladathoz talán mégiscsak túlzás a te próbálkozásod, ahol hosszú oldalakon keresztül csak az oop kód zaja látható. A megoldásod elsősorban nem a feladatot oldja meg, hanem azt próbálja demonstrálni, hogy ismered az php-s oop kulcsszavak használatát - lényegében pont azt mutatja be, hogy hogyan ne írj jó oop-s kódot.

  • Sk8erPeter

    nagyúr

    válasz Peter Kiss #11807 üzenetére

    Alapvetően egyetértek, szerintem is adott esetben sokkal szebb és átláthatóbb lehet egy OOP-s kód, ha valaki tényleg jól tud kódolni.
    Arra gondolok viszont, hogy pl. a Drupal magja sem teljesen OOP-s még, elsősorban örökség miatt - lásd PHP 4-es idők; nem egyszerű egy ilyen "rendszert" teljesen lecserélni; legalábbis a 7-esig, bár ott már sok minden OOP-sre lett alakítva, a 8-asnál meg még több dolgot ültettek át OOP-re, ezért van egy bizonyos keveredés egyelőre -, mégis alapvetően egész jól követhető a kód, amennyiben valaki már érti, miről is szól az egész, és itt is egy "rendszerről" beszélünk (azt írod, "rendszer nem lesz abból se", most erre reagálva mondom).
    De én pl. a még jobb követhetőség miatt sokkal jobban örülnék, ha a modulfejlesztés is például osztályok leszármaztatásából, interfészek implementálásából és hasonlókból állna, mert számomra is jóval áttekinthetőbb lenne a kód. De van ilyen szinte full OOP-s modul: Views.
    Igazad van abban, hogy így elég sok minden lóg a levegőben, ezt a hátrányt Drupalnál is érzem, a debuggolás is talán nehézkesebb emiatt. De a fejlesztők tudják, hogy van min javítani, ez is az irány. Itt és itt nálam sokkal jobban elmagyarázzák a miérteket.

    Ettől függetlenül szerintem picit túlzás, hogy csak az OOP-s kód a jó és mérvadó.
    Szerk.:
    cucka az előző hsz.-ben pedig elég tömören elmagyarázza azt is, amit én is éreztem a konkrét kérdés kapcsán, csak ő sokkal jobban megfogalmazta.

    [ Szerkesztve ]

    Sk8erPeter

  • Sk8erPeter

    nagyúr

    válasz Sk8erPeter #11809 üzenetére

    Csak nem bírom magamban tartani: mindenki már érti és kívülről fújja, hogy te nagyon vágod ám a tervezési mintákat, és odáig vagy értük, de ez nem azt jelenti, hogy csak te tudsz emiatt jó kódot írni, és mindenki más, aki procedurálisan kódol (pl. korábbi kódot fejleszt tovább), az "keveset tud". :U
    Hozzászoktam, hogy szereted erős túlzásokkal megspékelni a mondandódat, de azért ez már egy kicsit erős volt. Bár gondolom nem nagyon tudsz elképzelni olyan programozót, aki nem kódol OOP-ben, mégis nálad sokkal jobban tud programozni (szerk.: félre ne értsd, nem feltétlenül itt a topicban aktívan írókkal kell "versenyezned") - hiszen ahhoz kell némi szerénység, hogy az ember ilyesmit is el tudjon fogadni.

    [ Szerkesztve ]

    Sk8erPeter

  • cucka

    addikt

    válasz Sk8erPeter #11809 üzenetére

    cucka az előző hsz.-ben pedig elég tömören elmagyarázza azt is, amit én is éreztem a konkrét kérdés kapcsán, csak ő sokkal jobban megfogalmazta.
    Igen, az az elméleti okoskodás rész, ami akár elfogadható is lehet. (Nem az, ha valaki az informatikában megmondja a tutit, hogy csak és kizárólag egy módszer az elfogadható, na ő téved)
    A másik oldal meg a kód, amiből lényegében a class oriented dizájn állatorvosi lova, kb. mint ha egy java programozó első php-s kódja lenne.

    A php egy szkripnyelv, ezt érdemes szem előtt tartani, hogy valóban php-ban írjuk a php kódot, nem pedig javaban.

  • Sk8erPeter

    nagyúr

    válasz cucka #11811 üzenetére

    "Nem az, ha valaki az informatikában megmondja a tutit, hogy csak és kizárólag egy módszer az elfogadható, na ő téved"
    Na igen, én is ezt fejtegettem, hogy ne akarjuk itt megmondani a "one and only" módszereket.

    Azutánira: szintén egyetértek, ha valaki igazi OOP-s környezetet akar, akkor álljon át valamelyik webes Java-technológiára vagy például ASP.NET-re.

    Persze ettől függetlenül nem megkérdőjelezhető az OOP létjogosultsága sem a PHP-ben.
    Ahogy az is igaz, hogy amennyiben valaki az előbb említettekben IS programozik, annak az agya nyilván sokkal inkább rááll az OOP-s gondolkodásra, és nem valószínű, hogy engedni akar belőle (tehát ennek mentén fog kódolni PHP-ben is, amivel nincs baj). Viszont ez nem jelenti azt, hogy egy procedurális kód szar (sőt, nagyon jó is lehet, és nagyon nem arra utal, hogy az aszerint kódoló fejlesztő keveset tud [ettől a megjegyzéstől az agyam kinyílt]).

    [ Szerkesztve ]

    Sk8erPeter

  • cucka

    addikt

    válasz Sk8erPeter #11812 üzenetére

    Azutánira: szintén egyetértek, ha valaki igazi OOP-s környezetet akar, akkor álljon át valamelyik webes Java-technológiára vagy például ASP.NET-re.
    Van rengeteg "köztes" megoldás is, igazából manapság kevés olyan nyelvet használnak, ami ne lenne így vagy úgy objektumorientált - a php is ilyen.

    A probléma az idézett kódnál elsősorban az, hogy megpróbál túlságosan általános lenni, miközben ennek az égvilágon semmi értelme. Oop-vel könnyű olyan osztály hierarchiákat kialakítani, ahol minden komponens cserélhető, kiterjeszthető. A nehéz dolog előre látni, hogy a rengeteg lehetőség közül melyikre is lesz szükség valójában, és melyek azok, amelyek csak a program hosszát és a zajt növelik, hasznuk semmi. Például az említett kódban az összes oop rész gyengíti az alap algoritmus szemléletességét, miközben a feladathoz által nem megkövetelt komplexitást hoz be, megvalósítva azt az anti-patternt, ami "excessive accidental complexity" néven fut. (Van erre valami jó magyar szakkifejezés? :D )

    annak az agya nyilván sokkal inkább rááll az OOP-s gondolkodásra, és nem valószínű, hogy engedni akar belőle
    Szerintem a fejlesztő agya elsősorban a gondolkodásra kéne ráálljon. Mindenkinek javaslom, hogy hobbiból játszadozzon egy funkcionális nyelvvel (javaslatom a Clojure) - el fog bizonytalanítani, a szokásos pattern-ek nem működnek benne, pont ettől segít olyan sokat. Megtanít arra, hogy a feladatra és a program olvashatóságára figyelj, és ne foglalkozz semmilyen, valaki által kitalált és "one and only"-nak kikiáltott esztétikai iránymutatással.

    [ Szerkesztve ]

  • Sk8erPeter

    nagyúr

    válasz cucka #11813 üzenetére

    Tetszik, hogy ilyen kritikusan fogalmazol a tervezési minták, az OOP-zés túlzott majmolásával, deifikálásával kapcsolatban. :)
    Nem is tudok mit hozzátenni, szívemből szóltál.

    Sk8erPeter

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz cucka #11808 üzenetére

    Tudom, hogy a PHP script nyelv, de az is baj, hogy ebből nem bír kinőni, pedig egyre komolyabb dolgokra képes, illetve a Zend is próbál mindig jobban arra sarkallni, hogy objektumokkal dolgozzunk. Ezt annyira komolyan gondolom, hogy hobbiként fejlesztett rendszeremben a super global tömböket se kell használni.

    Emellett nem is szeretek úgy gondolkodni, hogy van egy feladat, aztán azt a lehető legegyszerűbb, legrövidebb módon oldjuk meg, mert mi történik akkor, ha jön egy hasonló? Duplikálás. Nyilván a fenti kérdés egy kis dologra vonatkozott, de, ha esetleg van valami cifra folytatása, már megérhette, illetve abban az esetben, ha több helyen kell valamit használni (itt például a táblázatos történetet, a parser sántít).
    Azt mondom, nem érdemes kicsiben gondolkodni.

    Mikor van hatalmas előnye annak, ha mindent a lehető legabsztraktabb módon írunk le? Akkor, ha tesztelni is akarjuk a kódunkat! Ha valaki fejlesztett már TDD módon úgy, hogy nem csak a covarege-et nézte, és gyártott a smoking test-eket, akkor tudhatja, hogy a jó tesztek kikényszerítik a fentebb látható kódstruktúrát, mert egyszerűen kell.

    Mindenki elindulhat a saját útján, én megmutattam egyet, én hogyan csinálnám, akinek tetszik, használja, akinek nem, az ne (csak nehogy egyszer én legyen a projektvezetője :DDD ).

    ---

    #11809
    "amennyiben valaki már érti" - ez a varázsgondolat :R
    Ha jó a kód, ordít magáról, hogyan kell használni. Nyilván, a PHP-nak itt vannak korlátai, de azért nem olyan rossz a helyzet. A fenti kódra szerintem senki sem tudná azt mondani, hogy nem tudja használ (a parser itt is kivétel, annak még bőven alá kellene dolgozni).

    ---

    #11810
    Nem vagyok programozó, szoftverfejlesztést szeretem, illetve az architect jellegű kérdésekkel, megoldásokkal foglalkozni.

    ---

    #11814
    Egyik tervezési mintát sem kell vakon követni, hiszen nem előírások, csak megfigyelt jó fogások, vagy épp rosszak. Amit mindig be kell tartani: egy osztály/metódus egy problémát oldjon meg, mindig mondja el, mire van szüksége a működéséhez, és minden a lehető legabsztraktabb maradjon. Ha valaki ezeket szemmel tartja, nagy baj nem történhet.

  • blacee

    csendes tag

    válasz Sk8erPeter #11806 üzenetére

    Az opkg update leszedi az összes csomagot becsomagolva, de abban nincs benne. A linkről amit küldtél külön letöltöttem a zoneinfo-europe_2011n-1_ar71xx.ipk-t és bemásoltam a /var/opkg-lists-be, újra se indítottam a lighttpd-t és láss csodát: M Ű K Ö D I K !
    Nagyon köszönöm a segítséget!!! :DD

    BLacee

    blacee

  • cucka

    addikt

    válasz Peter Kiss #11815 üzenetére

    Tudom, hogy a PHP script nyelv, de az is baj, hogy ebből nem bír kinőni
    A szkriptnyelveknek nagyon is van létjogosultsága és jövője, ne írd le őket.
    A php baja leginkább az, hogy egy inkompetens fickó tervezte és mai napig a régi verziók rossz megoldásait nyögi a visszafele kompatibilitás miatt.

    a Zend is próbál mindig jobban arra sarkallni, hogy objektumokkal dolgozzunk
    A Zend nem tudom, mire sarkall. Én úgy látom, hogy a php-ban egyre több a funkcionális nyelvekből átvett megoldás, ez pont nem az a tisztán oop-s irány.

    Ezt annyira komolyan gondolom, hogy hobbiként fejlesztett rendszeremben a super global tömböket se kell használni.
    Úgy érzem, hogy te a lelked mélyén java-ban szeretnél fejleszteni (esetleg c#), a kérdés, hogy miért ragaszkodsz a php-hoz? Átveszed azt, amitől a java nem túl jó és kidobod azt, amitől meg a php igen. Hobbi szinten végül is mindegy, szerintem inkább érdemesebb minden eszközt arra használni, amire való.

    Emellett nem is szeretek úgy gondolkodni, hogy van egy feladat, aztán azt a lehető legegyszerűbb, legrövidebb módon oldjuk meg, mert mi történik akkor, ha jön egy hasonló?
    Világos, viszont a túlzásba vitt általánosítás komoly veszély. Angolul "overgeneralization" néven fut ez az anti-pattern, amikor a lehető legáltalánosabb kódot szeretnéd írni anélkül, hogy tudnád, szükséges-e (kapcsolódik még ide a "premature optimization" nevű antipattern is).
    Dolgoztam már ilyen, lehető legáltalánosabbra megcsinált php-s framework-el. A tapasztalat, hogy a korai általánosítás inkább ront a helyzeten, mint javít - nekünk folyamatos szopóroller volt, hogy ott volt a nagy, bonyolult keretrendszer, ami minden eshetőségre fel volt készítve, kivéve arra, amire épp szükség lett volna, tehát lehetett áttervezni/refaktorálni. A lehető legáltalánosabb kód írása papíron hangzik csak jól.

    Mikor van hatalmas előnye annak, ha mindent a lehető legabsztraktabb módon írunk le? Akkor, ha tesztelni is akarjuk a kódunkat
    TDD-hez elég, ha moduláris a kódod, pl. globális függvényeket pont ugyanolyan jól fogsz tudni tesztelni. Persze, azért itt már előnyös az oop.
    Smoke test-nek meg nincs igazán köze ahhoz, hogy oop-s vagy nem oop-s a kódod.

  • Soak

    veterán

    válasz Peter Kiss #11815 üzenetére

    (csak nehogy egyszer én legyen a projektvezetője )

    Ha nem titok akkor hol dolgozol?

  • Soak

    veterán

    válasz cucka #11813 üzenetére

    Ezt be plusz1ezném ha lehetne .

    Tetszik ahogy a kommentekből kirajzolódik, ki az aki már programozott budget-ből és ki az aki elméleti fizikus.

    [ Szerkesztve ]

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz cucka #11817 üzenetére

    Nem írtam le a szkriptnyelveket, de a PHP pont olyan, ami simán le tudja vetkőzni magáról a szkriptnyelvségét, és klasszul lehetne használni, csak épp az elterjedtsége ellenére is kevesen próbálkoznak kiaknázni minden lehetőségét.

    Mit vett át funkcionális nyelvekből?

    Java-ban nem szeretnék fejleszteni, .NET-ben lehetőségem van minden nap (@Soak: termelő vállalatnál kell ügyviteli és termeléstámogató szoftvereket fejleszteni, sajnos eddig szinte csak legacy [és szar] kódokat kellett támogatni). De akkor végül is azt mondod, hogy PHP-val hegesszen mindenki úgy, hogy csak az adott problémára koncentráljon, legyen kész, és rendben is van a dolog?

    Overgeneralization-től még nagyon messze vagyunk, nyilván nem kell minden üzleti problémára egy mindent tudó solver-t írni, de azért arra oda kell figyelni, ne legyen semmi sem túlságosan összedrótozva. Premature optimization valóban veszélyes lehet, de igazából csak azt fenyegeti, aki rettentően unatkozik, és valamilyen oknál fogva előre látni véli a rossz teljesítményű pontokat.
    Azért, mert dolgoznod kellett egy rosszul megírt keretrendszerrel, még nem jelenti azt, hogy mindenhol rémeket kell látni. ;)

    TDD-hez nem elég a modularitás, mert simán tudsz olyan kódot írni (OO vagy nem OO), amit egyszerűen nem bírsz tesztelni, vagy nagyon nagy mocskot kell csinálnod, ezzel szemben egy interface-ből stub-ot/mock-ot hegeszteni nem nagy mutatvány. (Smoke tesztnek tényleg nincs köze az OO/nem OO dologhoz (bármit lehet rosszul tesztelni), de nem is azért írtam.)

  • PazsitZ

    addikt

    válasz cucka #11817 üzenetére

    Alapvetően abban egyetértek, egy házi 2 formos php kódot, lehet felesleges OOP-ben megírni.
    Továbbá, ha már adott is egyegyszerűbb kód, felesleges egy csv felolvasást köré 5-10 osztályt felhúzni.

    Viszont, ha én kezdenék bele, akkor már fognék egy framework-öt, ami segítségével oldanám meg a dolgokat.
    Alapvetően a PHP-s framework-ök is OOP irányba mennek, amit az én észrevételeim alapján a nyelv is egyre inkább támogat.
    Abban van igazság, hogy ez script nyelv, de ettől még nem a register globals és levegőbe lógó függvények szempontjából kell használni szvsz.

    Amennyiben pedig elkezdesz egy OOP framework-kel dolgozni, akkor viszont igenis namespace és osztálystruktúrát kell használni, nem kavarni a dolgokat.

    A TDD hasznos dolog, kellő rálátás esetén jobban ki is kényszeríti a szebb kódot, SRP-t, amiből már könnyen jön a panaszolt "overgeneralization".

    (#11820) Soak:
    Egyébként nem olyan könnyű eltalálni a balanszot.
    Egyik oldalról ott van az a szabály, hogy csak a kért feature-t fejleszd, ne űrhajót.
    Másik részről viszont rá lehet/kell érezni, mi az, ami a következő iterációban biztos be lesz rendelve. Ebben az esetben pedig nem árt, ha kicsit előre gondolkozva tervezel, kellő mértékben absztrakt a kódod, hogy ne kelljen szétdúrni és gyors-hatékony lehess.

    [ Szerkesztve ]

    - http://pazsitz.hu -

  • Soak

    veterán

    válasz PazsitZ #11822 üzenetére

    Egyértelmű, nem is azt mondtam, hogy szar kódot kell írni, de amikor nem csak tul kell bonyolitani egy példa kódot hanem több százezer (millió) sort kell lekódolni akkor kicsit átértékelődik, hogy mit hogyan merre , mivel emberek írják a kódot, ezért az emberek számára kell azt logikussá tenni és könnyen átláthatóvá.

    Nyilván ezt szinesíti amikor csapatban kell dolgozni és a folyamatos monitorozása annak, hogy ki-mit commitol a közösbe, mert amikor 50-60 ember dolgozik aktívan valamin akkor ha egy hibát kell javítani, az első 1óra azzal megy el, hogy feltérképezed a pontos folyamatot (és ez egy erősen OOP-s kód, viszont a projekthez mérten a lehető legátláthatóbban tartva és nagyon jól doksizva ) , na most ha itt minden sorban van két interface meg osztály akkor egy olyan hiba (vagy fejlesztés) ami amúgy egy logikus kódnál 3 óra, itt 2 nap.

    Szvsz (ha csak szigorúan azt számoljuk ami a logikát végzi ) akkor 3 fő réteggel meg lehet oldani. controller-üzletilogika-adatbázis réteg. Itt az adatbázis müveletek jelentik az elemi müveleteket amik a konkrét adatot szolgáltatják, az üzleti logika ezt tetszés szerint kombinálja (a lehető legegyszerübben) , a controller pedig gondolkozik.

    Innen már késöbb is el lehet indulni mondjuk egy bonyolultabb api megépítéséhez , vagy egy config réteget is betoldhat nagyon egyszerűen (ha indulásnál még nem volt).

    Mérlegelni kell, hogy mire van nagyobb esély : Jelentősen többet kódolok, hogy majd egyszer valamit könnyen betoldok, de ugysem gondoltam felére sem ami lehet, tehát sokkal nem vagyok beljebb, vagy az egyértelmű és általános modulokat megépítem amik közé egy kicsit több kódolással, de ugyanolyan logikusan beillesztek bármit.

    Szerk: Ahelyett, hogy a kód írást az vezetné, hogy mennyire jól tesztelhető, sokkal egyszerűbb egy komplett tesztkörnyezetet fenntartani (2 lépcsőbe- saját, aztán közös) ahol mindent rendesen ki tud tesztelni a megfelelő ember (hiba/feature bejelentője és a teszter vagy kinek mit teszik) egy jó dokumentáció mentén és jó rendszerismerettel .

    [ Szerkesztve ]

  • Soak

    veterán

    válasz Soak #11823 üzenetére

    Jah és amit még akartam írni , olyan szerenécs (?!) helyzetben vagyok, hogy egy 10éves legacy kódon és egy 1 éves (hasonlóan felépített kódot mint alább írtam, természtesen sok ezer munkaórával töketesítve ) kódon dolgozhatok és mind a kettővel meg lehet mindent oldani.

    Persze akármilyen mozzanat a régiben komplett részlegek refactorálásához kéne hogy vezessen, de ez nem von le abból, hogy tökéletesen (és viszonylag elfogadható erőforrásigénnyel) fut.

  • Peter Kiss

    senior tag

    LOGOUT blog

    Számomra itt a beszélgetés folyamán kicsit úgy tűnik, mintha két dologról lenne szó: az egyik, hogy megoldunk egy problémát, azt hogyan programozzuk le, a másik, hogy előbb megépítjük a környezetet, és azt hogyan programozzuk le. Nem tudom, lehet, hogy nekem tűnik így. Mindegy, tegyük túl magunkat a felhozott kódolási anti-pattern-eken:

    @Soak: Abban az esetben, ha van egy üzleti problémánk, akkor semmiféle képpen sem fogunk attól többet fejleszteni, mint amennyi szükséges. Vegyük azt, hogy egy teljesen új dologról van szó, nem kell régi vacakkal foglalkoznunk, és emellett van egy keretrendszer (ez lehet bármi, .NET, Zend Framework, mindegy), amiben dolgozunk. Tételezzük fel, hogy tiszta a megvalósítandó üzleti logika, gyakorlatilag csak fejlesztenünk kell. Hogyan érdemes ezt elkezdeni?

    Írunk teszteket, amelyek lefedik nagyvonalakban, amit szeretnénk kivitelezni, ilyen fázisban még a teszt is ocsmány lesz, mert csak körbelőjük, mit is szeretnénk. Ha ez megvan, megírjuk az első kódot, teszt, kódírás/refaktor/újabb teszt, innen már tudjuk, TDD.

    Ha így fejlesztünk, akkor észrevetjük, hogy az elején nagyon sokat kódolunk (leginkább a tesztek megírása miatt, nem az interface-ekre (vagy akár a mock-okra, stub-okra) gondolok, mert az relatíve kevés időt vesz igénybe), ellenben automatán tudunk mindent tesztelni (UI-t nehézkes ilyen szempontból, törekedni kell arra, hogy ott a lehető legkevesebb hiba fordulhasson elő). Mikor jó egy unit teszt?

    Ha azt és csakis azt teszteli, amit kell, gyorsan lefut, és egyértelmű a leírása. Ahhoz, hogy a teszt ilyen legyen az kell, hogy maga a tesztelendő kód is felvegye ezt a jelleget, normálisan megírt OO kód nélkül ez lehetetlen.
    Persze, a unit tesztek önmagukban kevesek, hiszen attól, hogy egy-egy rész jól működik, a big-picture még lehet, hogy sz.rt se ér, ehhez integrity test-ek kellenek.
    Mit látunk ezen a ponton?

    Összevetve egy nem TDD-s csapattal, sokkal több időt töltöttünk mindenféle kód (production + ami a teszthez kell [és a világos megoldáshoz!]) megírásával, viszont sosem kell amiatt aggódnunk, hogy nagy hibát vétenénk, ha kalapálunk valamit, segítenek a tesztek. Hibát keresni is sokkal gyorsabb lesz, hiszen rengeteg dolgot fejlesztési időben ki tudunk szűrni, illetve a kiadott verzióban is kevesebb lesz az utólagos hibák száma.

    Azt már említeni se merem, hogy léteznek olyan eszközök, amelyek kódolás alatt automatán futtatják a teszteket, így mindig up-to-date lehetsz (PHP-hoz nem tudom, van-e ilyen).

  • PazsitZ

    addikt

    válasz Soak #11823 üzenetére

    ha itt minden sorban van két interface meg osztály akkor egy olyan hiba (vagy fejlesztés) ami amúgy egy logikus kódnál 3 óra, itt 2 nap

    Megfelelő tesztekkel, rögtön ki kell, hogy bukjon a hiba helye. Ilyen szempontból pont jól beazonosíthatóan, mivel a felelősségi körök szét vannak osztva. Az interface pedig pont egyfajta contract, ami alapján az együttműködést lehet biztosítani.
    A szar, logikátlan kódtól persze az OOP sem véd meg egyáltalán, de ezt senki nem állította.

    százezer (millió) sor
    Olyan pedig pont nem létezik, hogy egy teljes rendszert részletesen, véglegesen lespecifikáljanak neked.
    Tehát az esetek többségében, úgyis fejlesztési iterációk vannak, ezáltal pedig úgyis vagy aránylag rugalmasan oldod meg a dolgokat, vagy refactorálhatsz.

    az emberek számára kell azt logikussá tenni és könnyen átláthatóvá.
    Itt nem tudom mire gondolsz, mi a nem logikus kód számodra. :F

    Jelentősen többet kódolok
    Én pont nem azt írtam, hogy jelentősebben többet kódolj. :N

    A nem jól tesztelhető kódot, hogy tudja rendesen kitesztelni a megfelelő ember?
    Én itt egy kis ellentmondást érzek. Avagy a kitesztelés nem az én gondom, oldja meg más, ahogy akarja? ;]
    Egyébként a rosszul tesztelhető kód a legtöbb esetben egy jelzés lehet a kódra nézve. :U

    [ Szerkesztve ]

    - http://pazsitz.hu -

  • DerStauner

    senior tag

    sziasztok!

    van egy tábla egy honlapon, amibe az adatokat adatbázisból olvassa be a honlap (php-vel).
    igaz az, hogy az ilyen táblának excel-be való exportálása php-val nehézkes?

  • dodopek

    addikt

    Sziasztok!
    Tudom, hogy nem kifejezetten php probléma, és volt is már itt vita, hogy a szerver konfig, és hasonló problémák ideférnek-e, de szerintem ha valahol, akkor itt biztos kaphatok választ,és szerintem igenis ideférnek az ilyen problémák.

    Xoo.hu ingyenes tárhelyére próbáltam feltolni phpbb fórumot. Már a file-okat sem sikerült feltelepíteni, mert a .htacces file-oknál (mindegyiknél) átviteli hibát jelzett. Minden más kiterjesztés gond nélkül felment, de ezt valamiért nem akarja megenni. TC-rel ftp-zek.
    Van valami ötletetek, hogy mi lehet a gond?
    Én barmolok el valamit?
    Köszi! :R

    Közben válaszolt az ottani rendszergazda, nem fog menni.
    "PhpBB és egyéb CMS rendszerek nem fognak működni az ingyenes tárhelyen. Arra fizetős tárhelyünket érdemes igénybevenni ahol komoly webpanellel , statisztikával, jelszavazott mappákkal és egyéb extrákkal lehet menedszelni a tárhelyet, mindamellett CMS-ek is gond nélkül futnak"

    [ Szerkesztve ]

  • cucka

    addikt

    válasz Peter Kiss #11821 üzenetére

    Nem írtam le a szkriptnyelveket, de a PHP pont olyan, ami simán le tudja vetkőzni magáról a szkriptnyelvségét
    Nem kell levetkőzze magáról. A szkriptnyelv nem alacsonyabb rendű, mint a hagyományos, típusos, fordított nyelvek, hanem más.
    Az egyik kedvenc tech blogomon pont ma jött ki egy bejegyzés, amivel maximálisan egyet tudok érteni, lásd itt . (Érdemes a többi bejegyzést is olvasgatni, nagyon jók)

    Mit vett át funkcionális nyelvekből?
    Utánanézve azért túl sokat nem. Vannak lambdák, van closure, már csak valamiféle "list comprehension" kéne (tervezik), továbbá ott vannak régről a map, filter, reduce, stb. eszközök. Persze az új dolgok szintaxisa igazi kendácsolás, de hát az egész php nyelv ilyen, meg van kötve a kezük a sok évvel ezelőtti rossz döntések miatt.

    Java-ban nem szeretnék fejleszteni, .NET-ben lehetőségem van minden nap
    Na, hát csak kibújt a szög a zsákból. Igen, a .net (vagy a java, mindegy) tisztán oop-s szemléletet kényszerít rád, ez van, amikor előnyös és van, amikor annyira nem előnyös.
    Mellesleg nagy feladatokat mostanában mindenhol oop elvek mentén fejlesztenek, igen, még szkriptnyelvekben is. Ami a szkriptnyelvek előnye itt, hogy a java/c# jellegzetességének számító boilerplate kódok hiányoznak.

    Overgeneralization-től még nagyon messze vagyunk, nyilván nem kell minden üzleti problémára egy mindent tudó solver-t írni, de azért arra oda kell figyelni, ne legyen semmi sem túlságosan összedrótozva.
    Azokat a komponenseket, amelyek megállnak a saját lábukon és újra felhasználhatóak, azokat lib-eknek hívjuk. Egy egyedi szoftver egyedi megoldásaiból sosem lesz lib, sosem fogod újra felhasználni őket. Szóval akkor miért kéne magad azzal sz*patni, hogy úgy írd meg a szoftvert, mint ha egy csomó részét újra fel szeretnéd használni?
    Nem azt mondom, hogy írjunk direkt szar kódot, hanem hogy a fejlesztés során megcsinált általánosítások nagy része teljesen fölösleges.

    Azért, mert dolgoznod kellett egy rosszul megírt keretrendszerrel, még nem jelenti azt, hogy mindenhol rémeket kell látni.
    A keretrendszer jól volt megírva és elméletileg k*rvajó kellett volna legyen, a probléma, hogy a valós igények nem pont olyanok, mint amit elméletileg előre el tudsz képzelni.

    TDD-hez nem elég a modularitás, mert simán tudsz olyan kódot írni (OO vagy nem OO), amit egyszerűen nem bírsz tesztelniű
    Miért, oop-val nem tudsz nehezen tesztelhető kódot írni, ha nagyon akarsz? :)

    [ Szerkesztve ]

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz cucka #11832 üzenetére

    Szkriptnyelvség: behányunk valamit valahová és valami kijön, ezt lehet könnyen levetkőzni.

    Lambdák vannak típusos nyelvekben is, .NET-be egészen durván jelen vannak.

    Ezt az általánosítást ne ferdítsd már el a hülyeség irányába. :U Egyedi szoftvert is kell általánosítani, mert különben túl bonyolult lesz a megvalósítása, ez kimerülhet pl. egy IStatus interface egy metódusában is, de jelen van, mert kell.

    Nálam az a keretrendszer, amivel nem lehet dolgozni, szarnak minősül. A "jól van megírva" dolognak két oldala van, maga a keret kódja penge, vagy az, ami kívülről lehet látni, mivel keretrendszert nem azalapján ítélünk meg, mi van benne, így a külsőleg látható elemekből kell döntést hoznunk arról, jó-e vagy sem.

    Utolsó bekezdéshez annyit, hogy idézted a mondandó felét, illetve a kérdésedre még ebben a kis részben is megvan a válasz. :U

  • Swifty

    csendes tag

    válasz Peter Kiss #11833 üzenetére

    Nem akarok beleszólni, de:

    - Pár oldal óta ez a topic nem a PHP-ről szól, hanem hogy milyen fika, milyen szar az egész...
    - Azt olvasom, hogy te milyen nagy programozó vagy, és aki nem úgy készíti el a programjait, mint te, aki már a magzatvízzel is kódokat szívtál magadba, az mekkora szar...
    - Aki mást mond mint te, az hülyeséget beszél, belehány valamit valahova, egy szóval fikagép...

    Na ezek után nem értem mi a f*szt keresel itt... Merthogy nem segítettél senkinek "PHP kérdések"-ben, azt bárki láthatja...

    Még offtopic-ként sem jelölöd meg a kötözködéseid...

  • mobal

    MODERÁTOR

    válasz Swifty #11834 üzenetére

    Valóba. Térjünk vissza az eredeti témához! :)

    [ Szerkesztve ]

    "Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

  • Sk8erPeter

    nagyúr

    válasz mobal #11835 üzenetére

    Nekem aztán nem tisztem megvédeni Athlont, mert az eddigi kommunikációnk egymással nem volt túl sikeres, meg sokszor küldte már rám a modikat, és azzal is egyetértek, hogy általában túlságosan köti az ebet a karóhoz, és a saját elveit tekinti mindenhatónak, de ettől függetlenül szakmai szempontból érdekes olvasni a fenti vitákat, az ő hozzászólásaival együtt is, amikhez cucka és fordfairlane meg Soak és még esetleg mások is hozzászólnak.
    A PHP-fejlesztés rejtelmeiről és mikéntjéről esik szó, összehasonlítva egyéb nyelvekkel is a lehetőségeket, nem tudom, miért kell leállítani egy ilyen szakmai vitát... :U Úgy érzem, ebben az esetben a moderálás nem jogos (nem anyázás folyik!), mert így csak agyoncsaptok egy végre érdekes eszmecserét, amiben nem az a téma, hogy hogyan kell validálni egy nyomorék formot. Szerintem a negatív kritika is része egy szakmának.

    Szerk.: OFF.
    Szerk. 2.: mobal, most látom, hogy ez te vagy, moderátor lettél, mik nem történnek (meg az avatarod is lecserélődött, ezért nem ismertelek fel)... :DDD

    [ Szerkesztve ]

    Sk8erPeter

  • j0k3r!

    senior tag

    válasz Sk8erPeter #11836 üzenetére

    teljesen egyetertek veled, habar en csak csendes szemlelokent kovettem az elmult napok hozzaszolasait. jo volt vegre valami "advanced" temarol olvasni, nem mindig csak a sablon (~ 2 perc google) kerdesekrol.

    some men just wanna watch the world burn...

  • mobal

    MODERÁTOR

    válasz Sk8erPeter #11836 üzenetére

    Félreértés ne essék a hozzászólásom off, nem hivatalos!

    Következő a problémám: olyan linket szeretnék készíteni, amire kattintva egy fájl le tudok "tölteni". Lényegében egy galériához "download" linkeket. Olvastam, hogy cUrl-el könnyen megoldható, viszont ennek a hiányában milyen módszert javasolnátok?

    "Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

  • Sk8erPeter

    nagyúr

    válasz mobal #11838 üzenetére

    Ennek örülök, bár ha egy modi mondja azt, hogy na kuss, akkor általában azzal agyon is van csapva a szakmai beszélgetés. Most már komoly felelősség terhel minden szavadért. ;]

    Bocs, de "force a download in php" kulcsszavakkal rákeresve, meg a PHP header() manualját megnézve is elég sok olvasmányt találni a témában... :) Mintha épp az előbb lett volna szó a 2 perc Google-ről. :DDD
    De a felvetést nem is értem, miért kell általad fejlesztett oldalhoz cURL? :F Vagy csak félreértettem a kérdésedet?

    (#11837) j0k3r! :
    jaja, pontosan. Elég régóta érdektelenek a topicbeli kérdések is, most legalább valami érdekesről van (volt) szó.

    [ Szerkesztve ]

    Sk8erPeter

  • Speeedfire

    nagyúr

    válasz mobal #11838 üzenetére

    Sima egyszerű header manipulálást.

    <?php
    $file = str_replace('../','',$_GET['file']);
    header ("Content-type: octet/stream");
    header ("Content-disposition: attachment; filename=".$file.";");
    header("Content-Length: ".filesize($file));
    readfile($file);
    exit;
    ?>

    Még mielőtt Athlon beszóna' ez csak egy alap példa!

    Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

  • cucka

    addikt

    válasz mobal #11838 üzenetére

    Nem kell hozzá curl. Lényegében a galéria letöltős linked egy php oldalra fog mutatni (mondjuk oldaladneve/download_gallery.php?gallery_id=5 ). A php szkript összeszedi a galéria file-jait, bezippeli és elküldi a kliensnek. A küldés lényegében annyit jelent, hogy beállítod a megfelelő header-eket (elsősorban content-type), majd egyszerűen kiírod a zip file tartalmát a standard kimenetre (vagy csinálhatod fpassthru-val is, gyorsabb).

    A kényes kérdés itt a zip-elés. Több lehetőséged van:
    - A php zip eszközeivel menet közben állítod elő a zip filet. Ezzel az a baj, hogy hamar ki fog futni a memóriából a php.
    - A php meghív egy shell script-et, ami elvégzi a zip-elést (parancssoros zip-el), a zip filet lerakja a temp-be. Te onnan fpassthru-val kiköpöd a standard kimenetre, majd törlöd a filet.
    - Minden galéria módosításnál elkészíted a zip filet, így bármelyik galériát is szeretné letölteni a júzer, csak átdobod neki a meglévő filet. Ez jó, ha ritkán változik a galéria, viszont gyakran töltik le egyben. A zip file elkészítésére a fenti 2 pont érvényes.

    (#11840) Speeedfire
    Ez jó, csak az alap probléma, hogy nem 1 file-ról van szó, hanem többről (galéria). Ezért a zip-elés.

    mod: továbbá érdemes tudni, hogy a böngészők igyekeznek intelligensen kezelni az érkező file-okat. Ezért van az, hogy egy zip filet automatikusan felajánl letöltésre anélkül, hogy varázsolni kéne a http header-ekkel. Nyilván, egy jpeg file-nál rá kell erőltetni ugyanezt a viselkedést a megfelelő header-ek segítségével.

    [ Szerkesztve ]

  • Peter Kiss

    senior tag

    LOGOUT blog

    válasz Swifty #11834 üzenetére

    Amennyiben ez PHP topik, akkor nem szeretnék látni semmit sem, ami MySQL vagy Apache (és hasonló jellegű) témával foglalkozik, köszi mindenkinek!
    Nem tudom, mennyire vagy benne a témában, de egy idő óta (segítek: utoljára arról volt szó, mennyire kell ráállni PHP-ban az iobjektum orientáltságra, hogyan építsük fel a kódjainkat, hogy ne szívjunk nagyot véletlenül se, ilyesmi) a tiéd volt az első off topik hozzászólás, amiben senkinek sem segítettél, illetve nem a PHP-tól beszéltél. Csak azért, hogy lekiabálj valakit (főleg ilyen alapon), nem kell írni. :N

    Látod, most bekattintom az off topikot. :K

  • mobal

    MODERÁTOR

    válasz Sk8erPeter #11839 üzenetére

    "Nem kell rögtön megijedni vagy hogyan fogalmazzak. Csak és szigorúan a saját véleményem volt. Természetesen a szakmai vita részét fontosnak tartom én is, de sok hozzászólásból nekem nem "csak" ez jött le, de lehet az én hibám!"

    Pontosítok. Megpróbálom úgy leírni, legegyszerűbben, hogy érthető legyen - Google volt ezeket megtaláltam csak nem tudom jó-e nekem, még nem próbáltam ki. Szóval úgy szeretném megoldani - és most egy buta példa - amit Chrome esetében tapasztaltam, hogy rákattintok és rögtön a képet tölti le, vagy adott esetben új tabot nyit, elindítja a letöltést majd bezárja (szempillantás alatt). Remélem így más érthetőbb! :)

    "Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

  • Speeedfire

    nagyúr

    válasz cucka #11841 üzenetére

    Jogos, akkor ezek szerint én értettem félre. Én a galéria képeire gondoltam. :B

    Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

  • cucka

    addikt

    válasz Speeedfire #11844 üzenetére

    Így olvasva a köv. hozzászólásokat, nekem úgy tűnik, hogy kettőnk közül én értettem félre, és tényleg 1 fileról van szó.

  • Inv1sus

    addikt

    $pagecontent = preg_replace( array("#( width=\")(.*)(\")#e", "#( height=\")(.*)(\")#e"), array("", ""), $pagecontent);

    Ezzel a sorral azt szerettem volna elérni, hogy egy szövegből, ami egy html kód, kiszedje a width és height attribútumokat.
    Kérdésem az lenne (úgy tűnik, hogy sikerült ezt megcsinálni), lehet-e valamit szépíteni rajta, illetve valamilyen hibalehetőséget rejt-e magában? :F

    [ Szerkesztve ]

    *** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

  • Sk8erPeter

    nagyúr

    válasz Inv1sus #11846 üzenetére

    Igen, elég sok hibalehetőséget rejt magában. :D
    Pl. azt, hogy konkrétan kiszedi az összes attribútumot pl. egy ilyen esetben:

    <img width="123" src="asdasd.jpg" height="123" title="blabla" alt="akármi" style="border:1px solid red;" />

    amit készít belőle:
    <img />

    Asszem ez neked nem lesz túl jó. :D

    itt kipróbálhatod:
    http://preg_replace.onlinephpfunctions.com/

    Hint: (.*) - ez így nem igazán szűkíti le a dolgokat. :)

    Szerk.: áááá, inkább mutatok rosszabbat, hogy még inkább elrettentsen.

    <div title="valami"><img width="123" src="asdasd.jpg" height="123" title="blabla" alt="akármi" style="border:1px solid red;" /><div style="color:red;" title="asd">ezmegaz</div><p style="color:red;" title="itt is">namégegy</p>
    </div>

    ebből csinál egy ilyet:

    <div title="valami"><img>namégegy</p> </div>
    elég brutálisan szétkúrja. :D

    [ Szerkesztve ]

    Sk8erPeter

  • Inv1sus

    addikt

    válasz Sk8erPeter #11847 üzenetére

    Nálam csak a width és height tagokat szedte ki.
    Ebből:
    <img style="float: left;" alt="Minta 1" src="../user_uploads/images/oldalak/kezdolap/pic1.jpg" height="118" width="118" />

    [ Szerkesztve ]

    *** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

  • Sk8erPeter

    nagyúr

    válasz Inv1sus #11848 üzenetére

    Igen, mivel te a stringed legvégére adtad meg a width és height attribútumokat... :U
    Te arra számítasz, hogy mindig így lesz? És arra számítasz, hogy csak és kizárólag <img> tagek lesznek a stringedben? (utóbbi még talán előfordulhat)

    Próbáld már meg, amit mutattam.

    2 próba:

    De tessék, itt van, amit mutattál, csak úgy, hogy az elejére teszem a height és width attribútumokat:

    <img height="118" width="118" style="float: left;" alt="Minta 1" src="../user_uploads/images/oldalak/kezdolap/pic1.jpg" />

    Screenshot:

    Most már hiszel nekem? :U

    [ Szerkesztve ]

    Sk8erPeter

  • Swifty

    csendes tag

    válasz Peter Kiss #11842 üzenetére

    Igen, ez PHP topik... De a PHP foglalkozik MySQL-el és kötődik hozzá az Apache...
    Ha nem szeretnéd ezt olvasni, akkor javaslom, hagyd ki a kérdést.
    Igazad van, én is kihagyhatnám, hogy Neked válaszoljak...

    Benne vagyok én is a témában (már ha itt arra célzol, hogy programozok-e PHP-ben vagy más nyelven, esetleg ismerem-e az OOP-t).

    Természetesen enyém volt az "első" offtopic, de ha jól emlékszem, akkor meg is jelöltem, hiszen arra próbáltalak rávezetni, hogy nem csak beszélni kellene a howto-król, hanem meg is kellene mutatni hogy mit hogyan.... Javítom magam: inkább szerintem pont ezt kellene "erőltetni", és nem az elméleteket gyártani...

    Személyes véleményem, hogy szép az OOP, de vannak olyan esetek, amelyikben teljesen "ágyúval a verébre" effektust generál, ha mindent objektumban kell legenerálni...

    Már ne is haragudj, (és elnézésedet kell kérnem, ha úgy vetted) de nem kiabáltalak le... Nem annak szántam, hanem inkább annak, hogy légyszi gondold át, hogy mit írsz... Elhiszem, hogy milyen nagy dolgokat írtál már, illetve hogy milyen szuper tematikákat ismersz, de azt gondolom, hogy ez nem segít mindenkinek...

    Itt problémák merülnek fel, amikre megoldásokat kell(ene) találni, akár a google segítségével, akár azzal, hogy elmondjuk, mennyire szarul képzeli el a delikvens az adott problémát...

    Köszönöm, hogy elolvastad a válaszom és hogy bekattintottad az offtopic-ot !!! :D :R

Új hozzászólás Aktív témák