REGPATH - sintaksa za selektiranje foldera i fileova

Ček da rezumiram.
Uvijek me napadaš jer po tvome uvijek izmišljam toplu vodu … i onda u cijeloj metodi vidiš samo jednu preuzetu liniju (što nije ilegalno, heh…Bože oprosti mi što sam ovako jako zgriješio xd) …i sada napadaš što plagiram? Hjooj… ma jel ti stvarno ovoliko obraza nemaš? Tj. jel si stvarno toliko jalan da padaš na ovu razinu?

I ovo je glupost…koja dolazi iz nerazumjevanja dobrih praksi programiranja.
Naravno da ću zadržati svoju naming konvenciju. Radim u nekoliko jezika i nastojim da mi se metode jednako zovu u svim jezicima. Onda prijenos neke logike (određenog komada algoritma, jel) .se lako transformira iz jezika u jezik. Jer ako ti se metode jednako zovu, skoro da možeš copy paste prenositi code iz jezika u jezik. (Osim ako ne radiš to pomoću kompajlera nekog …a i tada je lakše da se metode isto zovu.)
Sem toga, lakše je i pisati code u više jezika, ako si istim metodama normirao nazive, pa u svakom jeziku po istom imenu pozivaš istu metodu. Onda sve fino leti… uvijek igraš na domaćem terenu. :slight_smile:
Zato nakraj krajeva imena i služe… da iste stvari zovemo istim imenom.

No to ćeš saznati sa normJS-om, jer to je projekt da se ostvari upravo to na relaciji više jezika.
Ali to uz sav moj trud nikako nisi uspio shvatiti, niti ćeš čini se ikada shvatiti… ako ne možeš shvatiti da ono gore nije regex…

Post can’t be empty
Post must be at least 20 characters

Dozvoli da napravim mali osvrt na kod koji si postavio.

Ovako, imaš dosta nepotrebnih stvari u primjeru koji si dao.

Npr.

function take($array,$x,$defaultValue=null){

	if(isset($array[$x])) return $array[$x];
	else return $defaultValue;
}

Ono šta me stvarno bode u oči je nedostatak type hintinga, kako za ulazne parametre tako i za output. PHP 8 donosi puno dobrih stvari baš po tom pitanju pa možda ne bi bilo loše da pogledaš. Isto tako else u ovoj funkciji je redundantan.

function isAssocArray($arr){
	    
	    return array_keys($arr) !== range(0, count($arr) - 1);
	}

Moram priznati jako čudno rješenje, zar ne bi bilo dovoljno napraviti ovo?

return array_values($arr) !== $arr

Ovo je isto nepotrebno iz više razloga.

function isString($x){
	return (gettype($x)==='string') ? true:false;
	}

PHP već ima ugrađenu is_string funkciju koja je ujedno i brža od ovog što ti radiš. Isto tako nepotrebno je koristiti ternary operator jer ako napišeš samo return (gettype($x)==='string') dobiješ istu stvar. Ovo je junior level. Ista stvar je sa tvojom isArray funkcijom, postoji is_array nativna PHP funkcija.

function last($item){

	if(isString($item)){
		if(strlen($item)) return $item[strlen($item)-1];
		return null;
	}

	if(isArray($item)){
		if(count($item)) return $item[count($item)-1];
		return null;
	}

}

Ovakvo miksanje bi trebalo izbjegavati jer to je osnova za špageti kod. Pogledaj malo Single Responsibility Principle.

Dalje možda analiziram sutra. Moram prizanti da sam malo iznenađen. NHF ali kod koji si postavio nije dobar. Da, vjerujem da radi, ali fali ti dobre prakse i iskreno, nema šanse da bi ovo prošlo code review.
Programiranje i sposobnost programiranja nije ista stvar. Ne bi bilo loše malo poslušati i druge šta govore, ima ih dosta od kojih se može puno naučiti.

Zato imas autoload. Tako se ne radi sa file-ovima kod frameworka.

Kad si vec spomenuo wp, wp je ok za stranice koje su jednostavnije.

Tipa za veci portal se sve radi custom. Da li neki framework, vlastiti framework ili bez frameworka.

Što da ti kažem. Postoji velika razlika između tjeranja maka na konac i ostvarivanja zacrtanih ciljeva.
Ovo kakvo je, poslužit će više nego dovoljno da dođem na cilj gdje želim stići.

Znam da se može i tako pisati …ali nekako mi je ovako preglednije. Volim ponekada ovako. Svakako smatram da je to tjeranje maka na konac. :smiley:

Ako će ti koja milisekunda promjeniti nešto u životu, go for it.
Ja znam zašto sam išao ovako…zato jer na ovaj način svi moduli u različitim programskim jezicima zovu metode koje se isto zovu. Tako se meni ta metoda u svim jezicima tako zove i onda je sve kompatibilno na jednoj višoj razini.

Objasnio sam to u jednom postu iznad tpojki na odgovor.

Uglavnom da ne duljim…to tjeranje maka na konac me ne zanima.
Ako imaš kritiku koja će obrazložiti zašto nešto u konretnoj situaciji neće riješiti problem … onda ću je rado poslušati. Sve ovo ostalo ja gledam ko tvoj problem, a ne svoj. Učestalo sam primjetio da programere baš to koči što ne znaju fokus staviti na ono najbitnije…nego ga razvodnjavaju na nebitne stvari…i onda zaglave tamo negdje zato jer se bave nebitnim stvarima umjesto da se usmjeravaju ka bitnima. :wink:

Code koji se:

  • lako održava
  • koji je skalabilan
  • fleksibilan za modifikacije
    … je dobar code. Sve drugo je nebitno ili manje bitno.

Dobro, ima naravno još bitnih stvari …ali gornje kritike se ne suprostavljaju sa niti jednom od bitnih stvari. Tj. ako se kose sa nekom od bitnih stvari, volio bih čuti sa kojom to bitnom stvari? :slight_smile:

Koja milisekunda u procesiranju codea mi stvarno nije bitna. :slight_smile:

Radim sa autoloadom. To ne znači da nemaš igre sa pahtovima u određenim (mnogim) situacijama.

Također prekompajliranje coda se ne radi sa autoloaderom, nego negdje u koraku koji se najčešće zove onBuild()

To se moze i ako je cisti php bez frameworka.
Ako je code napisan na pametan nacin.

Sto ti znaci prekompaliranje?

Nit sam rekao da se ne može. :slight_smile:

Samo velim, poentiram na to…ako se već kritizira code, zanima me samo ona kritika koja ukazuje da je narušeno nešto bitno.

Ovo tjeranje maka na konac samo da se ukaže da se nešto moglo nijansu bolje…zaboli me ona stvar.

I vjerujem da nemamo svi isti osjećaj za nijanse, ali treba i to trenirati naučiti razdvojiti bitno od nebitnoga. Lakše je imati OKP, nego razumno raspodjeljivati pažnju na uistinu bitno. :slight_smile:

pre - kompaliranje

Pa što radi webpack sa svim svojim file-ovima prije nego kreira radne file-ove?
Što radi kompajler SASSa ili LESS-a?

Pa ne izvršava se sav code direktno…nego imaš određene sintakse koje se moraju pre-kompajlirati, da bi bile kasnije razumljive onome tko će ih čitat/procesuirat.

PHML je jezik koji prekompajliram.
I javascript isto prekompajliram i na taj način širim sintaksu po svojoj potrebi.

Moje mišljenje na tu temu: Zašto pre-kompajlirati code

@ajme Welcome.

Btw. (ne samo sa ove teme) bilo je vrlo interesantno čitati tvoje postove na ostalim temama o programiranju. Vidi se da raspolažeš iskustvom koje je zasnovano na ispravnim principima, industrijskim standardima i dobroj praksi.

@bozoou sve ovo navedeno tvoj kod nije. Možda tebi to tako izgleda, ali stvarno nije.
Jedan od principa s kojim se vodim na poslu prilikom osvrta na moj kod je da ne shvaćam kritiku osobno. Probaj, možda nešto i naučiš :wink:

Preporučam odličan članak na tu temu The 10 commandments of navigating code reviews | TechBeacon

2 Likeova

Jos jedan nepotreban layer.

:+1:

2 Likeova

Ako kažeš stvarno, ne znači da si time išta argumentirao.

A sada argumentirano da vidiš o kakvim deluzijama pričaš…recimo za:

Napravio sam upravo bench test i usporedio moj pristup (za koji sam svjestan da je sporiji) od nativnog is_string. Rezultat testa kaže da je za moju metodu da se trigira 100 000 puta potrebno 0.01696sec, dok je za nativnu potrebno: 0.003298sec.
Nativna je očito brža, točnije na 100 000 trigiranja metode se uštedi ravno: 0.013662sec,
točnije po jednom pozivu metode se uštedi vremena: 0.0000013662sec

Ako tu uštedu stavimo u nekakve realne brojke, recimo da se u prosjeku po otvaranju stranice moja metota trigira 10 puta, to znači da sam po jednom otvaranju stranice mogao uštediti: 0.000013662sec.
Drugim riječima, moja stranica se mora otvoriti 731957 puta, da bi uštedio samo jednu sekundu procesorskog vremena.

Ako je to ono što smatraš bitnim, samo izvoli tjerati mak na konac.

A sada ću ti slikovito objasniti gdje zapravo griješiš.

Zamislimo da smo godina 1980. i da svjedočimo utrci auta na 402 metra. Ti pripremaš svoj auto, dok netko drugi priprema svoj auto.
Ti glancaš svoj auto do iznemoglosti jer smatraš da što se više sjaji da će biti manji otpor zraka i da ćeš tako uštediti 0.0000013662sec na prolaznom vremeneu.
Dok netko drugi dolazi sa totalno prljavim i masnim autom na istu utrku i boli ka kiki što će zbog te masnoće biti sporiji 0.0000013662sec, ali on zna da je masan zato jer non stop kopa po vitalnim djelovima svog auta ispod haube i da će jednog dana tamo 2000-te takvim pristupom oboriti i preko 10 sekundi svog prolaznog vremena.

Tako nekako, pa ti slobodno glancaj.
Bio sam takav u gotovo svim aspektima svog života, ali onda sam shvatio čaroliju “quick and dirty” pristupa i doslovice sam svjesno radio na sebi da uravnotežim glancanje i “quick and dirty” pristup …jer ovo quick nekada donosi jako puno, pod prihvatljivm dirty faktorom.

Drugim riječima, idealna krivulja našeg napretka se uopće ne nalazi tamo gdje nam se to može pričinjavati (na nekakvom savršenom uređenju)…nego na jednoj liniji koja nastaje pod okolnostima koje se neprismotrenom promatraču čine totalno kaotične i neuredne.

Opet slikovita usporedba.
Zamislimo da ulazimo u neko skladište od kojega očekujemo savršeno uređenje. Vrlo vjerovatno bi zamišljali kako je unutra sve tip top sve špagi posloženo… besprijekorno čisto…sa puno prozarčnog prosotra između polica.

No savršeno skladište je dijametralno suporotno. Em je dosta prljavo, em je nabijeno sve i pomalo kaotičnog izgleda. Zašto savršeno skladište izgleda tako?

Pa savršeno skladište izgleda tako jer na taj način najbolje ispoljava svoju ulogu. Skladište koje bi previše trošilo svojih resursa da se non stop čisti i bude berspijekorno čisto …rasipa nepotrebno tu energiju.
Skladište koje je previše prozračno… znači da se moglo izgraditi puno manje skladište, uštediti na betonu…organizirati bolje police i postići isti kapacitet uz manje uloženih resursa.
Ovo dvoje gore kada se dotjera do svojih max granica, dobiješ naočigled skladište koje je kaotično…i užasno.

Sada ako odeš u real life, vidjet ćeš da većina skladišta izgleda prije poput ovog drugog, ne prvog skladišta.
I to je zato jer iskustveno ljudi dođu da im je lakše imati skladište drugog tipa nego prvog tipa…jer tako ulažu manje energije u to skladište i više dobiju od njega za manje uloženog.
Ne kažem da ljudi u praksi svi imaju savršena skladišta…samo ukazujem na to da je tu negdje između ta linija savršenstva od onoga što vidiš u praksi i onoga što očekuješ pod pojmom “savršenstva”. Što je iluzija.

Isto primjeni na code…savršeni code može nepristranom promatraču izgledati kaotično i neuredno. No on ako ne krši bazične uvjete, taj naočigledni kaos nikako ne mora biti negativan.
Jer kao što ono kaotično skladište ima svoje procedure da se skladištari dobro mogu snalaziti u tom “kaosu”, tako i naizgled kaotičan code može imati svoje procedure.

No tako duboko u code nismo zagrebali jer si se uhvatio najpovršnijih stvari … a svakako potencijalna ušteda od 0.000013662sec ne čini code lošim.

Vratimo se na poliranje auta …da se nisi zagledao u poliranje auta (kao mikro primjedbe), možda bi primjeti one makro stvari na kojma se radi. A te makro stvari su rad na vitalnim djelovima auta, koji će jednog dana oboriti vrijeme kako spada … a ne nekakvih 0.000013662sec.

Za početak si se uhvatio nekakve helper metode, nisi gledao sliku u globalu. Nisi gledao što ta sintaksa unaprijeđuje itd. A i to je mikro slika…jer i to je dio još nećega većega o čemu sam ponešto napisao.

Generalno ako me pitaš gdje svoj code vidim za nekih 20-30 godina, reći ću ti iskreno da ga vidim takvoga da će računalo razgovarati sa čovjekom i to vrlo intuitivno sa tom osobom. Programirat će se kao što se danas odgaja dijete. Trenutna ušteda od 0.000013662sec je tu najmanje bitna stvar koja će odlučiti hoću li tamo stići ili ne. I ne moram ja tamo prvi stići, ako ne ja…netko drugi će.
No to je smjer u kojem se trebaju mijanjati vitalni dijelovi ispod haube auta, a ne glancanje prašine radi tih 0.000013662sec i bacanje energije na to.

A da bi se tamo stiglo, treba raditi na jednoj široj slici, na kojoj ja radim, to su:

  • izučavanje neuronoskih mreža
  • rad na financijama i generalno proučavanje marketinga
  • rad na mogućnostima umrežavanja viši ljudi

Kakvo glancanje?

Još jedna slikovito dočaranje tvoje opaske.
Zamislimo sada Ivicu Kostelića koji radi na svojim rezultatima skijanja. On da bi pospiješio rezultate skijanja, on osim na skijanje ide i u:
-gym
-gimnastika
-itd.

I sada zamisli da mu u gym-u priđe neki okorjeli body builder i kaže mu…slab si ti. Da bi bio ovakav kao ja fali ti to i to i to…

Ali Ivica Kostelić niti ne želi niti treba biti ko on …njemu je dovoljno 60% gymya, 60% gimnastike …da bi najbrže napredovao ka cilju koji si je on postavio.

Tako i meni treba (bubam) 60% programiranja, da riješim sve probleme i izazove koji se ispred mene nameću. Sa obzirom na sve, previše sam energije i uložio u programiranje i moram to pravilnije raspodijeliti na ostale stvari …a ne da glancam haubu radi 0.000013662sec.

Nadam se da sam išta bio jasniji.

Iskreno, jedino što sputava i usporava krivulju u napretku ka mom cilju…što se dam zavući da odgovaram na ovavke nekonstruktivne postove.

Ali za konstruktivnu raspravu jesam …i ponavljam. Ako postoji primjedba koju možeš pretočiti i prikazati kroz realan problem u praktičnom smislu. Spreman sam ju poslušati i raspraviti u dobrom duhu da se malo istraži imali ili nema smisla.

A i ovo što tpojka kaže tipa…“ne valja što koristitiš regex, on je prespor” , a bez da se imalo rezonira u kojim okolnostima se koristi… i kada taj affekt na brzinu ima važnosti u praski, a kada nema … je puko naklapanje bez da se razmišlja o praktičnosti neke upotrebe. I kada se smije, a kada ne.
A ovih tvojih 0.000013662sec su tek desert nepromišljanja na tu temu.

Opet mi nije žao za ovaj post, jer ako ćeš i ti gledati bez zamagljivanja pogleda, vidjet ćeš da sam ti ukazao na neke vrijedne principe o promatranju i razumjevanju onoga što je kaos, a što je savršenstvo. I gdje se stvarno može pronaći svoja najbrža krivulja napretka.
Ima ljudi koji preko noći zakucaju u nebesa…tako da smo svi sigurno jako daleko od idealne krivulje napretka koju bi mogli u svom životu pronaći i ostvariti. Nekako mi se čini da je nećeš pronaći u ovome: 0.000013662sec

Nekome je nepotreban, a ja smatram da je meni potreban za ono što želim postići. Nebi inače ulagao ogromnu energiju na razvijanje toga. Možda griješim, vrijeme će pokazati.
Svakako sam svjestan da je ambiciozan zalogaj i vrlo moguće preambiciozan. No to mi pričinjava tek dodatan izazov.
Kada će cijeli svijet raditi preko toga web, onda ćeš reći sotonino djelo. :stuck_out_tongue: A ja ti odmah kažem da su to Anđeoske ideje i samo od tuda mi hrabrost da pratim te naume. :wink:

Pročitao sam možda 20% tvog posta, a odustao sam jer je naporno. NHF.

Uglavnom, hvataš se za krive stvari. Uhvatio si se jednog najmanje bitnog, ali bitnog segmenta u cijeloj toj priči, brzine, i počeo “argumentirati” nekakvim čudnim nespojivim analogijama. To šta je sve ostalo krivo u tvom pristupu nema veze? Sad se pitaš kako znam da je krivo? Ako nisi znao, u svakoj industriji postoje industrijski standardi, pa tako i u IT-u. Vidim da ti ne mariš za njih i nije te briga. OK, al to su odlike “loših” developera s kojima niti jedan ozbiljan developer ne želi raditi.

Volio bi te vidjeti u okruženju sa jedno 10-tak developera koji su top klasa u svojem području. Ja npr. imam sreću raditi s njih 3. Misliš da svatko od njih ima vlastite standarde?

Spominješ nekakav normativ, kako očekuješ da ostali developeri prihvate to i pridruže ti se u razvoju kad ne znaš ni osnove i smatraš i nebitnima? To šta tebi tvoji špageti izgledaju super, ostalima i ne baš.

Uglavnom, nije me briga šta radiš, kako radiš i zašto radiš. Meni je to sve super jer ne radim s tobom, a i sviđa mi se entuzijazam. Tako da, sretno ti sa svime time.

1 Like

Uhvatio sam se samo jednog, jer nema potrebe da ti razjašnjavam sve.
Jer lijepo sam ti ponudio ako misliš da iti jedna od onih stavki narušava nešto krucijalno da onda to i argumentiraš.
Ja sam ti samo pokazao na jednoj stavci kako se argumentira i dovodi na vidjelo što će se iz nečega desiti, a što neće. Na tebi je da svoju kritiku baciš u praktične oblike, tj. da dokažeš na što će utjecati u praksi ili neće.

Šta bi ti trebao objašnjavati da je ovo:
return (gettype($x)==='string') ? true:false;

isti vrag ko i ovo:

return gettype($x)==='string';

Naravno da sam toga svjestan, no to je još manje bitno od onih: 0.000013662sec

Jedino što ima imalo smisla od tvoje kritike je php8 i prelazak na strongly typed način codiranja. No i to bi ti mogao objasniti ako bi prvo uvidio da su ove ostale stvari totalno nebitne. Onda bi mogli otvoriti i nešto kompleksniju temu, ovako nema smisla preskakti korake. :wink:

Inače bio sam voditelj web odjela gdje se tipkao C# koji je strongly typed jezik.
Tako da sam ja bio taj čiji su se principi slijediti l koji je uvijek imao riješenje u rukavu za svaki problem.
Uglavnom, principe i dobre prakse stvaraju vođe …a ne oni koji slijede voditelje.
Kada i ako ću stvoriti ono što stvaram, onda ću svakako nametnuti svojim ljudima ono što ja smatram da je bitno da se poštuje. Ostalo je sloboda izražavanja svakog pojedinca.

Slažem se i za industrijski standard…no nemoj se razbacivati tom riječju i primjenjivat je na ovakve sitnice: return gettype($x)==='string' ? true:false;

Tvoj problem ako ih nisi razumio. Potrudio sam se.

I još nešto… nisam ja ovo tražio.
Ti si tražio code…za što? Da bi ga komentirao? I sada ti je naporno?

Jel ti hodaš po ulici i naglas komentiraš drugim ljudima kako su obučeni i kritiziraš njihov style. I onda je tebi naporno ako ti objasne zašto se tako oblače?

Shvati, ti si naporan što si si dao dopuštenje da krtiziraš nešto nepozvan.

Tema kao tema je otvorena da se kritizira i komentira postavljena REGPATH sintaksa, dočim code/engine koj će parsirati tu sintaksu, svako može sebi napraviti poštivajući ili nepoštivajući industrijske standarde.
Tako sintakse funkcioniraju. One kreiraju pravila …no one nisu CODE koji ih parsira i izvršava ta pravila.

Tvoje traženje da vidiš moj code je moja dobra volja što sam ti ga proslijedio. Konstruktivna rasprava na tu temu mi je ok…ali nešto nepozvan kritizirati i još ne argumentirati tu kritiku…e to je naporno. To je onda više ko pljuvanje.

Velim, slobodno idi po ulici i kritiziraj druge ljude ako ti ne paše njihov stil oblačenja. Ima li to smisla? :wink:

Jesi li uopće upratio da sam taj čitav komad coda napisao bez da sam kliknuo iti jedan jedini refresh / izvršavanje coda?

I kad sam bio gotov, kliknuo sam “play” i radio je.
Praktički isprve sam stvorio meni potrebnu funkcionalnost, code ide u ladicu i radit će dobro svoj posao.
Nije utjeran savršeno, ali radit će. To je ono što mi treba. I u startu sam ga pokrio cijelog debelo sa testovima, tako da me neće iznenaditi neki potencijalni bug. A to mi je najbitnije.
Quicky je rješeno i idemo dalje sa zadacima koji čekaju. A ne da gubim vrijeme razbijajući glavu o 0.000013662sec. :wink:

U to mi je jako teško povjerovati, a ako i jesi, kladim se da to nisi bio više od 3 do 6 mjeseci?
Obično u tom rasponu je review zaposlenika.