E, muka mi je - part II - die()

Dakle, pošto sam odlučio da uvedem engleski jezik na sajt, pitanje je bilo koji jezik da bude default? Ako stavim srpski, kada dodje neki ne-srbin na sajt neće razumeti ni jednu reč, a pitanje je da li će se snaći da promeni jezik. Ako stavim engleski, šta je sa sajtom koji je godinu dana radio na srpskom i 9000 članova koji su navikli da vide srpski. Nisam baš siguran ni da će oni uspeti da promene jezik jer i ovako ništa ne čitaju šta piše, ne znam šta bi ih nateralo da “primete” srpsku zastavicu u vrhu strane.

Odlučih da skinem ip2country i da implementiram funkciju koja će na osnovu IP adrese da provali ko odakle dolazi i samim tim svima koji nisu sa ex-yu prostora prikaže automatski engleski jezik, a ostalima stari dobri srpski. Pronađoh bazu, pronađoh script i namestih sve lepo da funkcioniše. Nisam uspeo da testiram kod kuće pošto ne prepoznaje IP adresu 127.0.0.1, što je i normalno, a pošto sam pravio još dosta nekih izmena, rekoh - hajde da završim sve pa ću da uploadujem.

I jedne “lepe” večeri, krenem sa uploadom, postavim sve, odem na sajt - sve izgleda ok. Posle sat-dva, odoh da bacim pogled još jednom, kad vidim samo 8 ljudi na sajtu što se nije desilo već skoro godinu dana. Provalim da nešto nije u redu i počnem da uploadujem ponovo, pa ponovo, pa gledam kod… kontaktiram neke ljude - oni ne vide sajt uopšte - izađe im bela strana. Što je najgore, kada odem na www.romance-cafe.net sve radi ok, kada odem na www.romance-cafe.com koji je domain alias - ne radi, i ja dobijem praznu stranu. Pomislio sam da nije neki resolve problem, pa možda smarty zeza, možda PHP, pa … i tako izgibih skoro pola dana, kreiram domene i hosting, brišem domene, pravim redirekcije, uploadujem 10 puta, čak sam hteo da radim clean install na serveru jer sam sumnjao da nije problem FS.

Na kraju, odlučim se za “ljakse” debug, na svakoj liniji stavim echo LINE i ako se ne prikaze broj linije - znaci da je greska pre toga. Tako utvrdim da je greska u cookies modulu, ali opet ne mogu da shvatim zašto bi cookie pravili takav problem da ne može da se otvori sajt. I tu, oprobanom “debug” metodom provalim da je greška u ip2country funkciji.

Odem, pogledam o čemu se radi i ne mogu čudom da se načudim. Majstor “programer”, ima bug u funkciji i ne može pravilno da provali koji je country abbr za određeni IP i u tom slučaju izbaci die()!? Jebo ja njega i njegov PHP manual koji je čitao i ne kapiram zašto u gomili primera u PHP manualu stoji:

if (something)
   \"do something\";
else
   die();

Ispravio sam bug i sklonio to idiotsko die() i odmah je sve proradilo. Pa bar da napiše

die(\"Greska u modulu xxx\")

pa da zna čovek gde je problem.

Šta se u stvari dešavalo (za one koji ne čitaju pažljivo): pa funkcija nije umela da provali country na osnovu IP adrese jer je imala neki bug, a “majstor” je napravio “retard” kontrolu greške pa u slučaju greške radi die() što momentalno ubija script i zato se prikazuje prazna strana. Vidim da mnogi kada ne mogu da se konektuju na bazu stavljaju die() (priznajem i ja sam to radio dok sam ucio iz PHP manuala i nisam koristio mozak). Zar nije logicnije da se prikaze strana ali sa nekim upozorenjem da je baza nedostupna, a da recimo webmasteru stigne sms ili bar mail tipa “Šefe, baza ti je pukla na www….”?

Ali zašto je radilo nekima? Pa zato što language settings čuvam u cookie, i oni koji imaju cookie setovan, idu na taj jezik, a oni koji nemaju - ip2country vraća country na osnovu kojeg određujem koji jezik da prikažem. Ko god nije imao cookie setovan - izlazila mu je prazna strana, ko je imao setovan cookie mogao je normalno da uđe na sajt.

I posle me pitaju “što čoveče pišeš sve sam, imaš to već gotovo“. Fuck “gotovo” - vidiš šta se dešava kada koristim tuđe. Tako su mi “kenjali” za forum na Romance Cafe, kao “zašto si pisao forum kad imaš gotovo”… neka… bolje da potrošim 2 dana da pravim forum nego da posle drhtim da li će neki lamer da mi deface-uje forum i jurim bug-ove po kodu.

Greške su uvek tamo gde ih najmanje očekujete (ko bi očekivao da zbog cookie neće da prikaže stranu), a za ubuduće evo i hint: potražite ih prvo u kodu koji niste vi pisali. Die “die()“.

3 komentara na “E, muka mi je - part II - die()”

  1. Ilija Studen

    Tuđi kod je najveće prokletstvo. Imam svoje navike, svoje funkcije i sve to odstupa od mog “patterna” me izuzetno nervira. Toliko da mi je lake provesti 2 dana ili nedelje “izmiljajući toplu vodu” nego koristeći neto tuđe.

    Čak i kad se odlučim da uzmem neto tuđe, obično je to na nivou nekog alata (RSS parser, code highlighter i slično) koji obično uzmem i “prekucam”. U tim slučajevima uzimam koncepciju, ne sam kod.


  2. NIXA

    vaistinu :)


  3. Filip Milivojević

    Jo gore je kad treba da izmeni neki tuđi kod, jer nekome treba samo neki “mail” quirk, to je tek da se ubije.

    Ja u principu radim isto to i Ilija - prekucam sve to mi treba. Tako je mnooogo lake.


Napišite komentar

Molba i napomena: Ako imate želju da komentarišete molim vas da se predstavite. Anonimne komentar brišem ili u najboljem slučaju totalno ignorišem. Uvrede na bilo čiji račun ne tolerišem, ako se ne slažete sa tekstom ili nekim komentarom slobodno i iskreno to napišite ali se suzdržite od uvreda bilo koje vrste.

XHTML: Možete koristiti HTML tagove: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Ako želite samo da SPAM-ujete, komentar će biti obrisan automatski, a ako vam je iz nekog razloga baš stalo da imate link ovde poslaću vam cenovnik za oglašavanje.