DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Izbor PHP Framework (http://www.devprotalk.com/showthread.php?t=3434)

bluesman 18. 02. 2010. 15:19

Off Topic: "Izbor PHP Framework"?

Ko mu dade takvo ime? Nije gramatički ispravno a i taj koji je pokrenuo ovu temu je omašio temu - uopšte ne pričamo o tome. Znači naslov teme je offtopic :)

degojs 18. 02. 2010. 15:27

Citat:

Originalno napisao Misha
Automatski osim kad se to ne dogodi..

To nije problem JS-a, već onog ko je implementirao upravljanje memorijom, itd. Npr. Chrome može da to radi bolje, a IE6 lošije.

xippi 18. 02. 2010. 15:32

Citat:

Originalno napisao Misha (Napišite 79888)
Predpostavljam da za layout management i ostalo sto JQ nema koristis third party pluginove... il se trudis da ih ne koristis da sve sam pises?

pazi, jq je samo set helper funkcija a jqui samo set kontrola, implementacija je na developeru :) postoji sasvim fin third party layout plugin koji omogucava pravljenje viewportova i ostalog o cemu pricas. ovo moje je sa druge strane sasvim custom tako da layout manager pisem sam. imam blanko html, u koji ubacujem templejtovane objekte (predefinisan, konfigurabilni html), pri cemu se trudim da sve to bude kompatibilno sa themerollerom

a ovaj razgovor dalje definitivno uz pivo ili na drugoj temi :)


btw ajd stvarno neka neko splituje topic... od 6te strane gde smo poceli da pricamo o kapucinu :)

xippi 18. 02. 2010. 15:35

Citat:

Originalno napisao bluesman (Napišite 79892)
Znači naslov teme je offtopic :)

ovo cu da ti ukradem i stavim u signu :)

jablan 18. 02. 2010. 18:59

Citat:

Originalno napisao degojs (Napišite 79887)
Jednostavno želim da imam mogućnost da definišem ugovor, kao i da jednostavno testiram da li prosleđeni objekt ispunjava potrebne uslove iz istog (vrlo jednostavno ako imaš interfejs).

Je l' ti kontaš uopšte da je interfejs kao OO koncept nužno zlo, tj. predstavlja workaround da bi se u statički tipiziranim jezicima koji ne podržavaju višestruko nasleđivanje odradile neke stvari koje se u duck typingu podrazumevaju?

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto (kao ovaj lik sa xippi-jevog linka, mada i on koliko vidim više razonode radi), pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan. Mada i to nema puno smisla pošto dinamički jezici obično nemaju "potpise metoda" u C-smislu reči, odnosno metode mogu da prime i vrate uslovno rečeno bilo šta. To je feature, a ne bug. :)

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već... ;)

degojs 18. 02. 2010. 19:47

Šta? LOL

Citat:

"Interfejsi su nužno zlo u jezicima koji ne podržavaju višestruko nasleđivanje..."?
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

Jednostavno, izuzetno kratak način da objaviš ugovor (skup funkcija i svojstava).

Citat:

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto, pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan.
Hahha, "ako je nekom uopšte potrebna.." :D

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?

Ako ćeš tako, sve može da se odradi na okolni način, ali možemo i da osnovne računske operacije obavljamo direktno baratajući registrima na procesoru, šta će nam bilo kakva apstrakcija.

Citat:

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već...
Kakvo "programiranje koje se svoji na definisanje ugovora"? To bi trebalo da znači nešto konkretno? Drugim rečima, poštedi me komentara sa visine ako nemaš šta konkretno da kažeš.


Inače, odgovor sam potražio i našao sam, umesto ovakve besmislene priče sa tobom. Stvar može da se reši drugačije u JavaScript-u, prostim prototype nasleđivanjem, slično kao što se C++ čisto virtuelne klase koriste u zamenu za interfejse. Otprilike ovako:
Kôd:

function IDuck() {
}
IDuck.prototype = {
  duck : function() {},
  walk : function() {}
}

function Guska() {
}

Guska.prototype =  new IDuck();

var g = new Guska();

alert ( g instanceof IDuck ); // true!


degojs 18. 02. 2010. 20:00

U stvari, nije baš tako jednostavno kao ovo gore, jer to opet ne garantuje da objekat zaista ima vlastitu implementaciju definisanih metoda. Oh, well.. mene mrzi dalje da tražim :D

jablan 18. 02. 2010. 20:27

Citat:

Originalno napisao degojs (Napišite 79914)
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

O gospode... Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan". Sa druge strane, u rantajmu se ta provera radi vrlo lako i nije neophodan nikakav veštački language construct da bi se to izvelo, već se to radi sa postojećim konceptima (npr. običnim metodama).

Taj "ugovor" o kome pričaš zapravo nema veze sa koderom. U pitanju je ugovor sa kompajlerom, tj. jedini način da ti kompajler dozvoli da pozivaš iste metode na objektima različitih klasa. Drugim rečima, pisanje interfejsa je tvoja obaveza, a ne privilegija.

Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita... :)

Citat:

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?
Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš, i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:

Kôd:

# unapred definišemo svojstva i funkcije:
sve_sto_covek_mora_da_podrzava = [:hodaj, :trci, :x, :y, :z, :visina]
# pa pitamo kratko
objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava

Viđu mađije! Bez interfejsa! :)

degojs 18. 02. 2010. 20:50

Citat:

Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan".
LOL Pa da, neće se buniti kompajler, buniće se runtime kad pukne :D


Citat:

Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš,
Kako ne trebam kad trebam? Šta će biti ako pokušam da pozovem funkciju koje nema? Svašta.

Citat:

i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:
Tako sigurno ne, jer to nije JS. Ili grešim?

Kako rekoh, već sam sam pronašao odgovor koristeći prototype nasleđivanje po uzoru otprilike na pomenute virtuelne metode/klase iz C++, a ispitivanje sa instanceof.

I evo upravo sam ga i naterao da proradi (čini mi se :D), negde u prethodnom primeru je bio typo ili tako nešto.

ivanhoe 18. 02. 2010. 20:51

Postoje neke js biblioteke za contracte, recimo ova

mada, to je sve realno potrebno uzasno malom procentu ljudi, javascript nije u startu ni zamisljen za takve stvari, zamisljen je da bude uzasno flksibilan i lak za rad, i u tom smislu je 99% vremena i na 99% posto realnih web projekta daleko bolji jezik od recimo vbscripta ili ne daj boze jave, koja je IMHO uzasno smoran jezik. E sad, ako neko planira da pravi web verziju photoshopa u js, ili da pravi simulacije big banga u php-u, ili vec tako nesto, to je onda ipak vise problem njegovog loseg izbora alata, nego sto je to problem samog jezika... just my 0.02 pare

degojs 18. 02. 2010. 20:58

^Ivanhoe, sve dok JS jeste takav kakav jeste, neće ni biti u situacijama da mu trebaju takve stvari, slažem se.

Sad je to više problem kokoške i jajeta.

Ali pazi, da imaš izbor da koristiš nešto drugo, pitam te da li bi koristio JS? I kada bi JS bio napredniji, garantujem ti da bi već odavno koristili isti još više i to sa uživanjem. Nažalost, MS i Yahoo i još neki su nedavno značajno usporili dalji razvoj JS-a pozivajući se na kompatibilnost, itd. Šta da se radi..

degojs 18. 02. 2010. 21:55

@jablan, čisto da isteramo mak na konac:

Citat:

objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava
Ovaj, sta je "podrzava" gore? Ne vidim nigde to definisano? Je l' to obaveza programera ili runtime sad razume i srpski, pored danskog?

jablan 18. 02. 2010. 22:10

Ok, s obzirom da si prešao u "ad hominem" mod, ja prelazim u "from a distance people can't tell who is who" mod pa te neću udostojiti odgovora.

Inače, ta funkcija bi se u JS-u implementirala nekako ovako:

Kôd:

Object.prototype.haveMethods = function(methodList) {
  for(var i=0; i<methodList.length; i++) {
    if (typeof(this[methodList[i]]) != 'function') {
      return false;
    }
  }
  return true;
};

/* i onda na degojs-ovom primeru: */
g.haveMethods(['duck', 'walk']); /* vraca true */
g.haveMethods(['duck', 'walk', 'talk']); /* vraca false */


degojs 18. 02. 2010. 22:13

Nemoj ti meni kako bi se implementiralo u JS pomocu "objekti u JSu su asocijativni nizovi", pa moze tako bilo gde (refleksija, itd) da se proveri..

Inace, tvoje pominjanje ad hominem nesto mi ne pase, s obzirom da si poceo gore sa ovakvim stvarima, sigurno ne ja, npr: "Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita...", pa onda mali Perica i tako dalje.

Druga je stvar sto ti ne umes da ukapiras da bi neko proverio da li objekat podrzava skup funkcija pre nego bi pozvao neku funkciju.. Tvoj problem.

Znaci nakon sto pocnes prvo nekog da ismejavas, iako upravo ti gresis, sad jos i lazes i meni pripisujes takvo ponasanje prvom. Lepo.

Interesantno da kad ti nesto tebas da isprogramiras, neku pomocnu funkciju, onda to nije problem, a? Ali ako u Javi ili PHP-u treba da se malo programira, onda je to "sve samo ne elegantno, ekspresivno, itd".

PHP podrzava interfejse, koliko mi se cini :)

Imam i ja savet za omladinu: pre nego pozovete neku funkciju, ne bi bilo lose znati da li funkcija uopste postoji na objektu.



Inace, imamo deal, ja cu tvoje poruke ubuduce da ignorisem, pokusaj i ti moje.

jablan 18. 02. 2010. 22:31

Citat:

Originalno napisao degojs (Napišite 79936)
Ali ako u Javi ili PHP-u treba da se malo programira, onda je to "sve samo ne elegantno, ekspresivno, itd".

Dakle, ti tvrdiš da ne postoje manje i više ekspresivni jezici? Pa C# je živi primer jezika koji je u poslednjih 10-ak godina prošao kroz par verzija, svaka je za magnitudu ekspresivnija od prethodne. Možda treba da probaš da ubediš ljude iz MS-a da su se džaba cimali, jer je sve to isto...

Citat:

PHP podrzava interfejse, koliko mi se cini :)
Verovatno ovdeprisutni PHP-ovci ne mogu da žive bez njih, koliko su korisni... :)

Citat:

Imam i ja savet za omladinu: pre nego pozovete neku funkciju, ne bi bilo lose znati da li funkcija uopste postoji na objektu.
Ovo zapravo i nije preterano dobar savet... U originalnoj OO paradigmi, metode (odn. kako ih ti zoveš, funkcije) samo su "uputstva" objektima kako da obrađuju poruke koje dobijaju od drugih objekata. Pojmovi sa kojima se zapravo barata su poruke, a ne metode. U tom smislu, uopšte nije neophodno da objekat ima definisanu metodu da bi znao kako da hendluje neku poruku koja mu je upućena.

Citat:

Inace, imamo deal
Bojim se da ga nemamo. :)

ivanhoe 18. 02. 2010. 23:51

Citat:

Originalno napisao degojs (Napišite 79936)
Nemoj ti meni kako bi se implementiralo u JS pomocu "objekti u JSu su asocijativni nizovi", pa moze tako bilo gde (refleksija, itd) da se proveri..

heh, mene je jednom prilikom, u vreme news grupa, Douglas Crawford iznapusaovao kad sam nekom nesto pomagao i upotrebio izraz asocijativni niz za neki objekat ... ne, molicu lepo, JS nizovi su objekti koji samo simuliraju pristup preko sintaxe za asocijativne nizove... bem li ga ako znam i danas koja je fundamentalna razlika, ali posto je on u medjuvremenu postao velika JS faca, rekoh da se pohvalim da mi je odrzao lekciju :P

degojs 19. 02. 2010. 01:20

Pa tako cu i ja jednog dana da se hvalim da mi je jablan rekao

Citat:

metode (odn. kako ih ti zoveš, funkcije)
Jer, ko je ikad video tu kljucnu rec u npr. JavaScriptu? Ma nema, prividja mi se.. func.. sta?

ivanhoe 19. 02. 2010. 20:53

hehe, kad smo vec kod price o JS, jeste videli WTFJS, ima stvarno umobolnih stvari u javascriptu...

EDIT: Jel moze neko da mi objasni kako se ovo desava?
Kôd:

(x=[].reverse)() === window // daje true
([].reverse)() === window  // daje naravno false


ivan.skugor 21. 02. 2010. 16:14

Citat:

Originalno napisao ivanhoe (Napišite 79920)
E sad, ako neko planira da pravi web verziju photoshopa u js

http://mugtug.com/sketchpad/

:1074:

ivanhoe 21. 02. 2010. 16:33

ima sam pre na pameti neke filtere tipa Unsharp mask :)

kodi 21. 02. 2010. 18:15

uh, pa to je matoro...
http://www.nihilogic.dk/labs/imagefx/

2008. valjda.. :D


Vreme je GMT +2. Trenutno vreme je 17:31.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.