Blog Ivana Posinjaka: PHP i MySQL ili ASP.NET i MS SQL?

Blog Ivana Posinjaka: PHP i MySQL ili ASP.NET i MS SQL?

Prvi članak Ivana Posinjaka na rep.hr-u ima cilj olakšati život budućim i okorjelim programerima, krajnjim korisnicima, ali i uštedjeti novce na izbjegavanju početničkih grešaka.

Bilo da volite ili ne volite open-source ili jednostavno ne marite, PHP u kombinaciji sa MySQL bazom je open-source pandan Microsoftovim ASP.NET framework-u i MS SQL bazi, a koji je najčešći u Hrvatskoj i u regiji.

Dobijete ga praktički na svakom web hosting paketu, dok novija open-source rješenja bazirana npr. na Perl-u, Ruby On Rails-u, Python/Django-u, obično dolaze tu i tamo ili kao dodatna opcija.

Kako je PHP i MySQL kombinacija najraširenija među open-source rješenjima - tako ima i cijela hrpa open source CMS-ova, PHP framework-a te prilagođenih CMS-ova domaćih tvrtki.

Vrlo su popularni zbog činjenica (samo par) da je:

  • cijena nešto niža jer nema licenci,
  • ispadate "good girl/guy",
  • kod open-source CMS-ova obično ima hrpetina gotovih funkcinalnosti i predložaka dizajna što ubrzava implementaciju i smanjuje trošak izrade.

Među open source CMS-ovima ističu se:

  • WordPress - specijaliziran za blogove (ali je puno fleksibilniji i moćniji od te jednostrane primjene)
  • Joomla - jednostavan i bogat dodacima, vrlo primjenjiv i kao stranice tvrtke i kao news portal,
  • Drupal - kompliciraniji od Joomle, ali i daje više,
  • eZ Publish - "enterprise level" rješenje na kojem su npr. pogonjene web stranice Vlade RH

Domaći prilagođeni CMS-ovi

Tu nimalo ne zaostaju niti domaće tvrtke koje su na PHP-u i MySQL-u razvile vlastite CMS-ove, kako za koju primjenu i raznolike funkcionalnosti i korisničke jednostavnosti uporabe.

Daju podršku i mogu razvijati dalje svoja rješenja u skladu sa potrebama naručitelja, što ponekad nije slučaj sa open-source CMS-ovima.

PHP framework-ovi

Framework nije CMS - ali je zato dobra podloga koja dalje olakšava i ubrzava razvoj (time i smanjuje ukupnu cijenu) praktički bilo čega što Vam može zatrebati na webu ili kao web bazirano rješenje.

Skriven od očiju krajnjih korisnika je cijeli svijet internih webova tvrtki ili web baziranih rješenja, koja su napravljena na nekom od rasprostranjenijih PHP framework-a:

  • CakePHP - popularan zbog jednostavnosti učenja i dobre dokumentacije, a i naziv zvuči "slatko"
  • CodeIgniter - dugo postoji i ima veliku bazu korisnika
  • Symfony - kao i CodeIgniter, jedan drugom pušu za vrat



PROBLEMI U PRVIM KORACIMA

Gotovi postojeći CMS ili neki open-source CMS

Prvi čest problem kod prve izrade vlastitih ili tvrtkinih web stranica je da se u startu napravi krivi korak odabirom vrste sustava za upravljanje sadržajem (engl. Content Management System ili skr. CMS).

Stvar se dodatno pogoršava jer se zbog ograničenje budžeta nastoji uštedjeti na svakom koraku, npr.

  • odabirom koliko-toliko prihvatljivih gotovih dodataka za CMS (npr. fotogalerije), a koji baš i nisu ono što želite
  • metodologija razvoja "sam svoj majstor", tj. učenje na vlastitim greškama
  • traženjem najjeftinijih rješenja za dorade koje ne možete napraviti sami (nepouzdani studenti ili već negdje zaposleni programeri koji su voljni dodatno zaraditi)

Rezultat su:

  • kasniji skuplji popravci ili čak odustajanje od nadogradnje ili prelaska na bolje rješenje, jer je svima pomalo muka od postojećeg,
  • zbog nametnutih ograničenja odabranog CMS-a trpe:
    • krajnji korisnici (posjetitelji)
    • oni koji koriste sustav (djelatnici ili Vi sami).


Vlastito rješenje sa ili bez nekog PHP framework-a

Drugi čest problem je:

  • želi se imati kontrolu nad svakim dijelom weba,
  • ima se znanja (tj. programera ili tvrtku koja se bavi izradom webova),
  • ima se specifičnih zahtjeva,
  • rokovi se u početku čine koliko-toliko realni.

Logičan izbor čini se vlastito, specifično rješenje. To je najčešće CMS napravljen prema Vašim potrebama, bilo "od nule" ili uz uporabu nekog od PHP frameworka (olakšavaju i ubrzavaju početni i kasniji razvoj).

Problem nastane kada prva verzija stranica treba biti brzo vani sa velikom količinom dodatne funkcionalnosti, a koja se ne može napraviti u željenom roku.

Rezultat su:

  • inicijalna kašnjenja,
  • ovisnost o programeru ili tvrtki koja je napravila web (tu, kao i svugdje, ima i žita i kukolja).

To često zamrači svijetle strane vlastitog rješenja:

  • unos i održavanje sadržaja prilagođen specifičnim potrebama
  • jednostavnija obuka
  • lakši daljnji razvoj i povezivanje sa vanjskim sustavima



KAKO NE BACITI NOVAC I TRUD U VJETAR?

Loše i dobre vijesti na početku

Loše vijesti na početku:

  • Nema 100% sigurnog i univerzalnog recepta,
  • postoje samo dobre smjernice, ovdje navedene na temelju osobnog iskustva,
  • potrebna je poprilična doza hrabrosti od naručitelja i izvođača da izaberu ponekad i rješenje koje više košta ili da odustanu od neizvedivih detalja (a koji se često čine bitni i neizostavni)

Idemo sad na dobre vijesti:

  • Uvijek postoji optimalno rješenje,
  • može se naći za svaki problem,
  • mogu se dobiti "i ovce i novce" odabirom rješenja koje najmanje košta, a najviše daje - samo treba strpljenja i dobra analiza na početku.



Kada uzeti open-source CMS i razvijati sam ili sa programerom unutar tvrtke (najjeftinije)?

Web je kandidat za open-source CMS i vlastiti razvoj ...

Definitivno je web kandidat za open-source CMS i vlastiti razvoj kada imate sve ove preduvjete:

  • web ima točno određenu namjenu, npr:
    • blog - idealan Wordpress
    • mali web tvrtke sa uobičajenim sadržajem (o nama, o našim proizvodima/uslugama, reference, itd.) - npr. Joomla, Drupal
    • webshop ili katalog proizvoda koji vam hitno treba
  • web treba biti brzo napravljen
  • web ne smije koštati puno (idealno da ne košta ništa jer već plaćate programera ili radite sami)
  • dizajn weba ne mora biti baš u zadnji detalj onako kako ste zamislili pa može ići i neki od gotovih predložaka
  • web programer je upoznat jako dobro sa nekim open-source CMS-om
  • web programer je zaposlen unutar tvrtke
  • web programer je raspoloživ i sad i za npr. iduće 2 godine (web treba i održavati)
  • u redu vam je da koristite gotovu funkcionalnost dodataka odabranog CMS-a (princip lego kockica) i ne želite raditi njihove modifikacije

Web nije kandidat za open-source CMS i vlastiti razvoj ...

Definitivno web nije kandidat za open-source CMS i vlastiti razvoj kada imate bilo koji od ovih preduvjeta:

  • web treba imati i intranet ili bilo kakav daljnji dodatni razvoj, a za koje ne postoje gotova rješenja
  • nemate puno iskustva (barem nekoliko gotovih projekata) u radu sa odabranim CMS-om
  • nemate web programera koji je zaposlen kod vas
  • nemate web programera koji vam u idućih par godina može biti na raspolaganju



Kada uzeti open-source CMS i vanjski razvoj (fleksibilnije i nešto skuplje)?

Web je kandidat za open-source CMS i vanjski razvoj ...

Definitivno je web kandidat za open-source CMS i vanjski razvoj kada imate sve ove preduvjete:

  • web ima početnu određenu namjenu, koja će se kasnije dosta nadograđivati i mijenjati
  • web može koštati nešto više
  • dizajn weba treba biti prilagođen vašim potrebama
  • nemate vlastitog znanja ili programera koji poznaje dobro open-source CMS (barem jedan ili dva projekta odrađena)
  • trebate pouzdanog, trajnog i iskusnog programera
  • puno ćete mijenjati gotovu funkcionalnost dodataka odabranog CMS-a

Web nije kandidat za open-source CMS i vanjski razvoj ...

Definitivno web nije kandidat za open-source CMS i vanjski razvoj kada imate bilo koji od ovih preduvjeta:

  • web treba imati specifičnu funkcionalnost koju obično ne nude CMS-ovi, npr. radite socijalnu mrežu ili oglašivački servis
  • želite imati programsko rješenje koje je u cijelosti u vašem vlasništvu ili u vlasništu vanjskog izvođača



Kada uzeti gotovi CMS vanjskog izvođača (fleksibilnost i cijena mogu jako varirati)?

Web je kandidat za gotovi CMS vanjskog izvođača ...

Definitivno je web kandidat za gotovi CMS vanjskog izvođača kada imate sve ove preduvjete:

  • web ima specifičnu namjenu za koju ste našli vanjski gotovi CMS, koja će se kasnije dosta nadograđivati i mijenjati
  • web mora koštati onoliko koliko će se nadograđivati - a za to trebate garanciju iskustva i poznavanja CMS-a vanjskog izvođača, a nitko ne poznaje bolje CMS od vlastitog
  • dizajn weba treba biti prilagođen vašim potrebama
  • želite točno taj CMS jer ste vć sa njime upoznati i radili ste zadovoljno na prijašnjim projektima ili niste radili ali ima baš ono što trebate
  • puno ćete mijenjati gotovu funkcionalnost dodataka odabranog CMS-a

Web nije kandidat za gotovi CMS vanjskog izvođača ...

Definitivno web nije kandidat za gotovi CMS vanjskog izvođača kada imate bilo koji od ovih preduvjeta:

  • web treba imati specifičnu funkcionalnost koju obično ne nude CMS-ovi, npr. radite socijalnu mrežu ili oglašivački servis
  • želite imati programsko rješenje koje je u cijelosti u vašem vlasništvu



Kada uzeti neki PHP framework (fleksibilnost zagarantirana, cijena može jako varirati i ide u skladu sa složenošću weba)?

Web je kandidat za neki PHP framework ...

Definitivno je web kandidat za neki PHP framework kada imate bilo koji od ovih preduvjeta:

  • web ima toliko specifičnu namjenu da nema gotovog ili open-source CMS-a koji bi odgovarao odmah ili ubuduće
  • web mora biti napravljen točno onako kako želite
  • web mora biti maksimalno prilagođen i olakšan unos korisnicima (npr. na portalima koji serviraju vijesti novinar ne smije trošiti puno vremena za unos zbog hrpe suvišnih opcija)
  • poslovni procesi na webu su takvi da imate puno odobravanja, obavješćivanja e-mailom, integracije sa vanjskim servisima tipa Twitter ili Facebook i slično
  • trebate vlastiti intranet ili neki drugi web servis
  • želite razvoj stani-kreni-stani-kreni, tj. krećete sa malim prilagođenim webom koji onda raste u skokovima (stani-kreni) kako rastu potrebe i imate sredstava

Web nije kandidat za neki PHP framework ...

Definitivno web nije kandidat za neki PHP framework kada nađete bilo koje drugo rješenje koje Vam bolje odgovara.

Razvoj weba u bilo kojem PHP frameworku podrazumijeva da i rokovi trebaju biti fleksibilniji jer je teže predvidjeti trajanje i troškove razvoja pojedine funkcionalnosti.



Kada kretati od nule?

Danas zapravo za tim nema potrebe skoro nikad - gotovi PHP framework u startu daje veću sigurnost i gotove funkcionalnosti.

Kod nas se zadržalo u nekim situacijama, npr.:

  • kada je brzina izvođenja kritična,
  • kad je riječ o izradi web stranica koje, eto, programeri jednostavno vole raditi na taj način jer tako već rade godinama,
  • kad je tvrtka razvila vlastiti intranet ili web bez da je uzimala neki gotovi PHP framework.



U IDUĆEM NASTAVKU PRAKTIČNE USPOREDBE KROZ PRIMJER IZRADE JEDNOSTVANOG WEBA I WEB SERVISA...

Zasipani hrpom informacija?

Zato u idućem nastavku ide praktična usporedba vremena (a time i novaca) potrebnog za izradu jednostavnog weba i web servisa te sve prednosti i mane pojedinog pristupa.

Jednostavan web biti će blog, napravljen u WordPress-u i u CakePHP framework-u sa osnovnom namjenom pisanja sadržaja.

Web servis biti će web aplikacija za prikaz polaska idućeg busa, napravljena u Joomla CMS-u i u CakePHP framework-u sa osnovnom namjenom prikaza dolaska idućeg busa za željeno početno ili završno stajalište.

A do tada ... sigurno imate svoja iskustva, ne slažete se sa napisanim ili mislite da je npr. WordPress alat za sve, a ne samo za blogove ili da je sramota ne koristiti Drupal?

Komentirajte - svi komentari su dobrodošli!

Ivan Posinjak završio je informatički menadžment na Tehničkom veleučilištu u Zagrebu. Zanat je ispekao u IN2 na projektu aplikacije za vođenje mirovinskih i investicijskih fondova.

Tehnička znanja kombinira s komunikacijskim i edukacijskim vještinama. Do sada je obučio više od dvije tisuće osoba različitih nivoa znanja, od osnova rada na računalu, snalaženja u bazama podataka do programiranja poslovnih aplikacija.

Zadnjih nekoliko godina budi se, i liježe, s web tehnologijama, a nemirni duh i želja za učenjem dobro mu pristaju i idu vam u prilog jer će kao freelance IT stručnjak svoje znanje vrlo rado i entuzijastično podijeliti s vama!