Korisne funkcije, kodovi, saveti za optimizaciju, razgovor

Započeo CADILAB, Jun 08, 2017, 12:52:14 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Ovde obavljujete korisne funkcije i slicno u jezicima koji su namenjeni za ovaj podforum.

Evo od mene odma algoritam za binarnu pretragu po nizu, algoritam uporedjuje vrednost kljuca sa vrednoscu srednjeg clana niza.


Ako se vrednost poklapa sa sredinom niza onda vracamo taj broj, ako je manja onda se ponavlja na levi podniz, a ako je veca na desni.

<?php	/*		If L > R, the search terminates as unsuccessful.		Set m (the position of the middle element) to the floor (the largest previous integer) of (L + R) / 2.		If Am < T, set L to m + 1 and go to step 2.		If Am > T, set R to m â€" 1 and go to step 2.		Now Am = T, the search is done; return m.	*/	function binarySearch($niz, $broj, $pocetak, $kraj)	{		if($kraj < $pocetak || $broj > $kraj) {			return -1;		}		$sredina = intVal(($pocetak+$kraj)/2);		if($broj == $niz[$sredina]) {			return $broj;		}		else if($broj < $niz[$sredina]) {			$kraj = $sredina+1;		}		else if($broj > $niz[$sredina]) {			$pocetak = $sredina-1;		}		return binarySearch($niz, $broj, $pocetak, $kraj);	}    $niz = range(0, 100000);	$broj = 1235454;	$vreme = microtime(true);	$pozicija = binarySearch($niz, $broj, 0, 100000);	$vreme = microtime(true)-$vreme;	echo "Rezultati pronadjeni:";	echo "<br><br>";	echo "Rezultati vraceni za ".round($vreme*1000, 6).' milisekundi<br>';	if($pozicija >= 0)	{		echo $broj .' pronadjen.';	}	else 	{		echo "Vise srece drugi put";	}?>



Poslednja Izmena: Decembar 21, 2017, 13:08:32 POSLE PODNE od Cadilab



Ja te od ovoga nista nisam skonto. Bukvalno nista. De prevedi na Srpskom. :D
Oduvek sam se pitao:
"Zbog cega se ljudi toliko brinu jedni za druge?",
"Zasto ljudi daju sve od sebe da usrece neku osobu?"

Najjednostavnije receno brinu se jer vole tu osobu celim svojim srcem,
daju sve od sebe da je usrece zbog toga sto ne zele da je ikada vide tuznom ili rasplakanom.
#xsarnaaparatima..

Objasnio sam sta radi algoritam i kako se koristi, ovo je za one koji zele uciti php i slicno i imaju neko predznanje. Otvorio sam temu da ljudi objavljuju svoje ideje i logiku a ne da skupljate postove.

evo na poslu dosadno pa sam sastavio ovo, dodacu nesto kad dodjem kuci
ovo je standardan nacin za konekciju na bazu koristeci pdo i prepared statements

http://php.net/manual/en/pdo.connections.php

<?php	// definisemo prvo pristupne informacije	$host = "localhost";	$user = "user";	$password = "password";	// pravimo konekciju	try {		$con = new PDO("mysql:host=$host;dbname=baza", $user, $password); // kreiramo novu konekciju		$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // postavljamo error mode na exception kako bi ga sa PDOException mogli "uhvatiti"		echo "Konekcija sa databazom je uspesna!"; // ispisujemo da je konekcija validna	} 	catch(PDOException $e) {		echo "Konekcija nije uspesna, detaljno: " . $e->getMessage(); // konekcija nije validna, ispisujemo error poruku		exit(); // zaustavljamo sve dalje procese	}	/**	* Ispod se nalazi primer za unosenje podataka u databazu	*/	$stmt = $con->prepare("INSERT INTO users (username, email) VALUES (?, ?)");	$stmt->bind_param("ss", $username, $email);	$username = "User";	$email = "email@email.com";	$stmt->execute();	/**	* E sada sta je ovo ? Ovo su tako zvani prepared statements, i oni za razliku od direktnih upita	* brze i efektivnije izvrsavaju upite. Isto tako veoma su napredniji od standardnih po pitanju protekcije za sql injection, iako nije nemoguca.	* Isto, iako se izvrsavaju vise puta, smanjuju vreme za parsiranje podataka (specijalnih karaktera i slicno).	*/	$stmt->close();	$conn->close();	/**	* Zadnje dve funkcije su opcionalne, iako se preporucuju, nakon obrade podataka php ce sam zatvoriti konekciju.	*/?>
Poslednja Izmena: Jun 09, 2017, 12:57:17 POSLE PODNE od Cadilab

Citat: Cadilab poslato Jun 09, 2017, 12:43:09 POSLE PODNE
evo na poslu dosadno pa sam sastavio ovo, dodacu nesto kad dodjem kuci
ovo je standardan nacin za konekciju na bazu koristeci pdo i prepared statements

http://php.net/manual/en/pdo.connections.php

<?php	// definisemo prvo pristupne informacije	$host = "localhost";	$user = "user";	$password = "password";	// pravimo konekciju	try {		$con = new PDO("mysql:host=$host;dbname=baza", $user, $password); // kreiramo novu konekciju		$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // postavljamo error mode na exception kako bi ga sa PDOException mogli "uhvatiti"		echo "Konekcija sa databazom je uspesna!"; // ispisujemo da je konekcija validna	} 	catch(PDOException $e) {		echo "Konekcija nije uspesna, detaljno: " . $e->getMessage(); // konekcija nije validna, ispisujemo error poruku		exit(); // zaustavljamo sve dalje procese	}	/**	* Ispod se nalazi primer za unosenje podataka u databazu	*/	$stmt = $con->prepare("INSERT INTO users (username, email) VALUES (?, ?)");	$stmt->bind_param("ss", $username, $email);	$username = "User";	$email = "email@email.com";	$stmt->execute();	/**	* E sada sta je ovo ? Ovo su tako zvani prepared statements, i oni za razliku od direktnih upita	* brze i efektivnije izvrsavaju upite. Isto tako veoma su napredniji od standardnih po pitanju protekcije za sql injection, iako nije nemoguca.	* Isto, iako se izvrsavaju vise puta, smanjuju vreme za parsiranje podataka (specijalnih karaktera i slicno).	*/	$stmt->close();	$conn->close();	/**	* Zadnje dve funkcije su opcionalne, iako se preporucuju, nakon obrade podataka php ce sam zatvoriti konekciju.	*/?>

Koja je sad razlika izmedju pdo i mysqli?

PDO je bolji i sigurniji nacin za konekciju sa bazom.
Izguglaj razlike najlakse ti je.



Citat: Harexe Svabo poslato Jun 09, 2017, 13:39:04 POSLE PODNE
Citat: Cadilab poslato Jun 09, 2017, 12:43:09 POSLE PODNE
evo na poslu dosadno pa sam sastavio ovo, dodacu nesto kad dodjem kuci
ovo je standardan nacin za konekciju na bazu koristeci pdo i prepared statements

http://php.net/manual/en/pdo.connections.php

<?php	// definisemo prvo pristupne informacije	$host = "localhost";	$user = "user";	$password = "password";	// pravimo konekciju	try {		$con = new PDO("mysql:host=$host;dbname=baza", $user, $password); // kreiramo novu konekciju		$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // postavljamo error mode na exception kako bi ga sa PDOException mogli "uhvatiti"		echo "Konekcija sa databazom je uspesna!"; // ispisujemo da je konekcija validna	} 	catch(PDOException $e) {		echo "Konekcija nije uspesna, detaljno: " . $e->getMessage(); // konekcija nije validna, ispisujemo error poruku		exit(); // zaustavljamo sve dalje procese	}	/**	* Ispod se nalazi primer za unosenje podataka u databazu	*/	$stmt = $con->prepare("INSERT INTO users (username, email) VALUES (?, ?)");	$stmt->bind_param("ss", $username, $email);	$username = "User";	$email = "email@email.com";	$stmt->execute();	/**	* E sada sta je ovo ? Ovo su tako zvani prepared statements, i oni za razliku od direktnih upita	* brze i efektivnije izvrsavaju upite. Isto tako veoma su napredniji od standardnih po pitanju protekcije za sql injection, iako nije nemoguca.	* Isto, iako se izvrsavaju vise puta, smanjuju vreme za parsiranje podataka (specijalnih karaktera i slicno).	*/	$stmt->close();	$conn->close();	/**	* Zadnje dve funkcije su opcionalne, iako se preporucuju, nakon obrade podataka php ce sam zatvoriti konekciju.	*/?>

Koja je sad razlika izmedju pdo i mysqli?

I pdo i mysqli su jos uvjek aktivni, brzina je tu negde, neke od bitnijih razlika su te sto je pdo samo objektivno orjentisan dok mysqli moze biti i objektivan i proceduralan, i jos jedna velika, po meni bolja stvar kod pdoa je sto dozvoljava da imenujes parametre dok to mysqli ne dozvoljava, zbog toga ga ja najvise koristim.

Neki saveti za optimizaciju skripte:

  • Koristite jednostruke navodnike umesto obicnih, dosta su brzi s obzirom da normalni traze prisustvo varijable.
  • Klase pravite samo kada su potrebne! Sto znaci da ukoliko vam je skripta objektivno-orijentisana ne trebate praviti novu klasu(metodu) za svaku sitnicu osim ukoliko su preko potrebne! Uvek gledajte da su vam funkcije napisane tako da ih mozete iskoristiti vise puta.
  • Zatvarajte konekciju! Neka vam ovo predje u naviku, iako php sam zatvori pdo konekciju kada izvrsi funkciju opet je bolje da je sami zatvorite!
  • Neka vam isset predje u naviku! Sto znaci da umesto count, strlen, sizeof-a koristite isset kad god je moguce i kad hocete da proverite ukoliko je nesto vece od 0.
  • Koristite === umesto ==
  • Gledajte da sto vise koristite nativne php funkcije nego da pisete nove koje ustvari imaju isto delovanje, nepotrebno je i tako ne treba pisati kod.
  • Kada radite debug ili sta vec koristite echo, brzi je za 12%-20% od printa.
  • Bolje je koristiti switch nego if i else if
  • Izbegavajte pozivanje funkcija u petlji, bice pozvana svaki put.
  • Gledajte da koristite celu putanju fajla koji hocete da pozovete u include ili require, dosta je brze zato sto server ne mora da je sam trazi.
  • Koristite preg_split umesto explode funkcije brza je za oko 20%.
  • foreach > for > while, petlje poredane po brzini.

Malo da aktiviramo i ovo posto odavno nista nisam pisao.
Naime, otkad sam poceo raditi u novoj firmi presao sam sa zenda i symfonya na laravel i mogu vam reci da je razlika velika I da mi se laravel sve vise i vise dopada, kako oni kazu kreiran je za "web umjetnike".
Ukoliko ste malo napredniji u phpu i znate sta je objektno orijentisano programiranje i zelite mozda nekad raditi neke komercijalnije projekte ili mozda cak za neku firmu preporucio bi vam da malo pogledate tutorijale ovog covjeka:

https://www.youtube.com/watch?v=EU7PRmCpx-0&list=PLillGF-RfqbYhQsN5WMXy6VsDMKGadrJ-

I isto tako procitate laravelovu dokumentaciju koja je po meni  najbolja i najdetaljnija dokumentacija od svih framework dokumentacija koje sam procitao.

https://laravel.com/docs/5.5/releases

Eto, nadam se da ce oni koje ovo privlaci i interesuje malo se zanimati i proucavati, ja kada sam kretao nisam imao nikoga da mi ovako nesto objasni i uputi u kojem smjeru da idem pa sam sve samucio I sada me kolege radne isto tako upucuju isto prema tom nekom node.js smjeru ali o tome mozda nekad kasnije.
Ali evo, ako nekoga ovo bas zainteresuje neka se javi ovdje, bilo bi bas kul da malo prodiskusujemo :)

Citat: Cadilab poslato Decembar 20, 2017, 15:34:11 POSLE PODNE
Malo da aktiviramo i ovo posto odavno nista nisam pisao.
Naime, otkad sam poceo raditi u novoj firmi presao sam sa zenda i symfonya na laravel i mogu vam reci da je razlika velika I da mi se laravel sve vise i vise dopada, kako oni kazu kreiran je za "web umjetnike".
Ukoliko ste malo napredniji u phpu i znate sta je objektno orijentisano programiranje i zelite mozda nekad raditi neke komercijalnije projekte ili mozda cak za neku firmu preporucio bi vam da malo pogledate tutorijale ovog covjeka:

https://www.youtube.com/watch?v=EU7PRmCpx-0&list=PLillGF-RfqbYhQsN5WMXy6VsDMKGadrJ-

I isto tako procitate laravelovu dokumentaciju koja je po meni  najbolja i najdetaljnija dokumentacija od svih framework dokumentacija koje sam procitao.

https://laravel.com/docs/5.5/releases

Eto, nadam se da ce oni koje ovo privlaci i interesuje malo se zanimati i proucavati, ja kada sam kretao nisam imao nikoga da mi ovako nesto objasni i uputi u kojem smjeru da idem pa sam sve samucio I sada me kolege radne isto tako upucuju isto prema tom nekom node.js smjeru ali o tome mozda nekad kasnije.
Ali evo, ako nekoga ovo bas zainteresuje neka se javi ovdje, bilo bi bas kul da malo prodiskusujemo :)

Slažem se da je laravel odličan, te autor istog inače radi dobre dokumentacije što ujedno čini laravel lagan za naučiti i koristiti..
A to što si sam morao učiti i sve ostalo, kod mene je ista situacija bila, sve što znam sam naučio sam, i to je najbolji način (Y)

Ja na poslu koristim symfony-ov paket za backend routing, koji deklariram u YML-u, dok ostatak piÅ¡em u core php-u najviÅ¡e, iako imamo dosta svojih paketa odraÄ'eni koji se nalaze na composeru..

A to što govoriš za node.js, nisi ga nikada probao ili?
Nije on nešto pretjerano težak, jedini problem ti može biti asinkrono programiranje, neki ljudi jednostavno to ne mogu da nauče nzm zašto.. ja većinu back-enda radim u node-u, dok naravno koristim i php, golang i počeo sam Scala-u..

Što se brzine tiče i iskustva moga ovako bih poredao jezike po brzini (back-end)
golang,
scala,
node.js
php

ali opet sve ovisi o tome kako dobro pišeš kôd i naravno upite za bazu..

Dal' koristite mongoDB na poslu? ako da, vjerovatno ćeš u skoroj budućnosti koristiti node.js
Software Developer

Super je to sto znas vise backend jezika.
Jesam radio sam sa node, cak stavise sam trebao raditi skoro jedan projekt sa njim medjutim klijent se odlucio na angular I devextreme za frontend a onda php (rest api), graphql I keycloak za beckend zbog cega bukvalno mjesec dana prije 8 pola 9 iz firme nisam izlazio a od 9 ujutro radim  :D
Ali moram priznati da jos uvijek ne mogu reci da vladam nodom, pogotovo zato sto oduvijek koristim I navikao sam na rad sa rdbm dok vecina radi sa nosql dbm...
Sada nakon godisnjeg negdje krajem januara sef me salje u beograd pa holandiju u te neke dve firme partnerske sa kojima bi to trebao savladati valjda 8)

Btw I ja bi trebao sa pythona na golang preci dobio sam neke dobre preporuke pa cu vidjeti sad mozda krajem godine da napisem nesto...:P
Poslednja Izmena: Decembar 20, 2017, 18:26:47 POSLE PODNE od Cadilab

Citat: Cadilab poslato Decembar 20, 2017, 18:25:04 POSLE PODNE
Super je to sto znas vise backend jezika.
Jesam radio sam sa node, cak stavise sam trebao raditi skoro jedan projekt sa njim medjutim klijent se odlucio na angular I devextreme za frontend a onda php (rest api), graphql I keycloak za beckend zbog cega bukvalno mjesec dana prije 8 pola 9 iz firme nisam izlazio a od 9 ujutro radim  :D
Ali moram priznati da jos uvijek ne mogu reci da vladam nodom, pogotovo zato sto oduvijek koristim I navikao sam na rad sa rdbm dok vecina radi sa nosql dbm...
Sada nakon godisnjeg negdje krajem januara sef me salje u beograd pa holandiju u te neke dve firme partnerske sa kojima bi to trebao savladati valjda 8)

Btw I ja bi trebao sa pythona na golang preci dobio sam neke dobre preporuke pa cu vidjeti sad mozda krajem godine da napisem nesto...:P

Super, svaka čast, samo deri :)

python je dobar ali ne za backend bas... ja ga koristim za AI i face recognition koji radim, te R-PI stvari za zabavu trenutno..
goLang je super, ali treba ga znati pisati, ne smije biti neiskorištenih varijabli i toga, :D

nego, u kojoj firmi radiÅ¡? i kakve stvari izraÄ'ujeÅ¡, web stranice ili?
Software Developer

Ja ti radim u https://dvcsolutions.com/
Ne radimo samo web stranice, tj ja sam zaposlen kao backend web developer ali isto tako pisem rest apije za mobilne aplikacije i angular.
Firma se inace bavi ios/android devom, software developmentom, emm, lbs, cloud provider, imamo datacentar i te stvarcice, ja gledam da se bavim sa svime po malo, ucim isto tako javu (to ako znas car si) radio sam nesto i na ios aplikacijama ali me to i ne privlaci toliko...:P

About

Welcome to the community!