DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Opušteno (http://www.devprotalk.com/forumdisplay.php?f=16)
-   -   najgluplja stvar tokom programiranja (http://www.devprotalk.com/showthread.php?t=5862)

degojs 11. 08. 2008. 21:20

Citat:

Originalno napisao dinke
P.S. Dobro, posto necete da zakljucavamo, onda zovem Majstora Advocacy-a (crni pojas - 10 dan) - Degojsa :)

* Dinke summons Degojs. 42 little penguins die instantly.

Ovaj, ne idem već duže vreme ni na ES:Adv, a kamo li da se onda ovde prepirem - ovoj temi samo ja nedostajem :):) (A i zadnji put kad sam se nešto prepirao ovde.. well).

A da sam se našao pogođen tim YabLAN-ovim pričama o tim nekim operatorima kao taj iz Rubija, onda bih mu jednostavno odgovorio da u T-SQL (MSSQL) i MySQLu (čini mi se) postoji funkcija IFNULL koju ljudi godinama koriste bez problema, pa bih isto to napisao i u PHP-u i u zdravlju i sreći je koristio, da mi je baš toliko potrebna neka prečica tog tipa.

Kôd:

function IfNull( $var&, $value )
{
  if !is_set($var) $var = $value;
}

i onda lepo

IfNull( $x, $y );

kad god hocu to.. Ako sam dobro razumeo sta je hteo, tj. šta radi taj operator koji je pomenuo.

Tako nekako otprilike - ko koristi PHP sigurno može ovo da napiše tačnije od mene, ja to otprilike, davno je bilo kad sam čitao nešto za PHP..

Uopšte ne vidim da je big deal imati poseban operator.

misk0 11. 08. 2008. 21:24

Jablane, mislim da previshe licno shvatas programski jezik. I ja sam jedan od 'tih' koji programiraju u PHPu. Zasto? Zato sto me placaju za to i zadovoljan sam tim sto radim. Dobro me placaju. Danas / sutra (cu)trazim drugaciji / bolji posao gdje ce mi reci 'oki, zajebi PHP ajd da programiras u JAVA, Ruby, RoR ili XX2 jeziku (karikiram) i dacemo ti vecu platu' - RADO. Radim stvari koje me zadovoljavaju, makar one i ne bile uvijek programiranje (recimo projektovanje, planiranje, monitoring, etc..).

Kao sto je bluz rekao - pogresno pristupas.
Tvoja prica mi lichi kao pricha Mac korisnika na spram Windowsa - sto vishe pljujemo po ovim drugim = vishe ce nas biti... blah

cvele 11. 08. 2008. 22:10

joj al ste otisli u off.... stvarno se ponasate ko deca od 10god

ko se seca diskusije dal je bolji "mesecar" ili "perjanac" kliker

dinke 11. 08. 2008. 22:25

Citat:

Originalno napisao cvele (Napišite 58618)
ko se seca diskusije dal je bolji "mesecar" ili "perjanac" kliker

Ma porculanci su zakon :1094:

Ilija Studen 11. 08. 2008. 22:27

^^ Nije baš tako jednostavno. Pošto si unutar funkcije promeljiva je već setovana pošto je proseleđena funkciji. Ako uzmeš promeljivu koja ne postoji dobićeš Notice. Dobar deo setupa ne izbacuje error message, ali oni koji to rade mogu da te lepo zavuku, posebno ako kasnije radiš se headerima (redikrecije and stuff).

PHP kôd:

<?php

  error_reporting
(E_ALL);
  
ini_set('display_errors'1);

  
// Not set, use default
  
$not_set default_value($not_set12);
  print 
$not_set '<br />';
  
  
// Value is set, skip default
  
$is_set 'sasa';
  
$is_set default_value($is_set123);
  print 
$is_set '<br />';

  function 
default_value($value$default null) {
    return 
$value === null $default $value;
  }

?>

Rezultat:

Kôd:

Notice: Undefined variable: not_set in /Library/WebServer/Documents/test.php on line 7
12
sasa

Shortcut ovog tipa bi trebalo da bude deo jezika IMO, ali bez toga se lako može.

degojs 11. 08. 2008. 23:03

Sad si me naterao da skidam i stavljam XAMPP.

Ilija, kada ja poteram taj tvoj kod, dobijem taj notice ALI pazi sad :)

Vidi primer sto sam ja stavio.. ja sam napisao $var&

Primeti ono & na kraju. To je trebalo da znaci - kao referenca.

Sad sam pogledao i PHP dokumentaciju.. To se u PHP u stvari stavi ovako:

&$var

Dakle, pre, a ne posle imena promenljive.


E kad ja ovaj tvoj primer promenim tako da pise (primeti & ispred $value):

function default_value(&$value, $default = null)

Onda vise ne dobijem Notice.

Hm?

robi-bobi 11. 08. 2008. 23:16

Off Topic:
Citat:

* Dinke summons Degojs. 42 little penguins die instantly.
kakvo crno zakljucavanje, ja se zabavljam unlimited ovde :D
umalo da se zagrcnem :D

bluesman 12. 08. 2008. 00:03

Jablane bre, nema veze sa uvredama, samo ti kažem (sada sa mnogo manje reči) da smarate i da je dosadno da gledamo svaki čas priče o tome kako je "ovo" sranje, a "ono" jako dobro, niko te to ne pita niti želi da sluša takve stari (osim eventualno na nekoj temu "šta je bolje, ovo ili ono?" ). Ti si rekao da to radiš jer koristiš ovaj način da promovišeš "ono", a takvo ponašanje je "neželjena reklama". Niko te ne tera, samo budi umeren.

bluesman 12. 08. 2008. 00:19

Jbt, Ilija... degojs bolje zna php od tebe :)

Evo ti jedna takva funkcija koju ja koristim stalno. Ovo je pojednostavljena varijanta:

PHP kôd:

function _get (&$variable$default null)
{
    
$variable = isset($variable) ? $variable $default;
    return (
get_magic_quotes_gpc()) ? $variable addslashes($variable);


pa kada uradis

PHP kôd:

echo _get($ne_postoji"nesto"); 

To moze i bez return, ali je return koristan bas kada hoces da uradis output ili da dodelis drugoj varijabli vrednost one prve. Vratice "nesto", ako nije definisana varijabla $ne_postoji

Ako pak stavis recimo ovako
PHP kôd:

echo _get($_POST['ne_postojim_ni_ja'], "nesto"); 

Ne samo da ce da odstampa "nesto" nego ce i da setuje: $_POST['ne_postojim_ni_ja'] = 'nesto';

ivanhoe 12. 08. 2008. 03:46

ja u templejtima koristim ovako nesto @val($a, $b, $c, 5), gde je val() funkcija:
PHP kôd:

function val() {
    
$args func_get_args();
    foreach(
$args as $val) {
        if( 
is_null($val) )
            continue;
        return 
$val;
    }
    return 
null;



jablan 12. 08. 2008. 08:14

Citat:

Originalno napisao ivanhoe (Napišite 58636)
gde je val() funkcija:

Kôd:

def val *a
  a.find{|m| !m.nil?}
end

Kôd:

>> val
=> nil
>> val 1
=> 1
>> val nil, 1
=> 1
>> val nil, false, 1
=> false

A, što da ne, mogu i da je ugradim u modul Enumerable:
Kôd:

module Enumerable
  def first_not_nil
    find{|m| !m.nil?}
  end
end

Pa će tako svaki npr. niz dobiti ovu metodu:
Kôd:

>> [].first_not_nil
=> nil
>> [1].first_not_nil
=> 1
>> [nil, 1].first_not_nil
=> 1
>> [nil, false, 1].first_not_nil
=> false


Ilija Studen 12. 08. 2008. 08:55

I stand corrected :) Nađoh i gde su diskutovali o dodavanju ovoga direktno u jezik - ifsetor.

robi-bobi 12. 08. 2008. 14:37

a ovo je super citko, jel?
Citat:

def val *a
a.find{|m| !m.nil?}
end
pazi, PROVALIO sam na drugo citanje, ali je dokazano da se (novi) ljudi lakse i brze snalaze sa PHP-like sintaxom nego li sa PERL-like sintaxom

cvele 12. 08. 2008. 15:03

koji jezik je bolji Srpski ili Engleski ?

Blood 12. 08. 2008. 15:08

^ latinski :D

jablan 12. 08. 2008. 15:12

Pa svakako ti nije čitko ako nisi imao kontakata sa sličnim jezikom ranije. Ilustrovaću ti primerom:

Citat:

Langt ude i Havet er Vandet saa blaat, som Bladene paa den deiligste Kornblomst og saa klart, som det reneste Glas, men det er meget dybt, dybere end noget Ankertoug naaer, mange Kirketaarne maatte stilles ovenpaa hinanden, for at rćkke fra Bunden op over Vandet. Dernede boe Havfolkene.
Ovaj citat ti verovatno nije preterano čitak, ali svakom danskom osnovcu jeste, u pitanju je početak Andersenove bajke "Mala Sirena". :) U prevodu, ne možeš očekivati da ti koncepti koje nisi koristio ranije budu intuitivno jasni. Na kraju krajeva, kako bi ti učinio dati kod "čitljivijim", živo me interesuje?

Za gledaoce sa jeftinijim ulaznicama, da protumačim kod:
Kôd:

def val *a
  a.find{|m| !m.nil?}
end

Prva linija: "def" definiše novu funkciju pod imenom val, koja prima proizvoljan broj parametara i pakuje ih u niz pod imenom a.
Druga linija: poziva se metoda find (koju imaju sve klase koje implementiraju Enumerable modul) niza a. Metoda find prima blok koda (to je ono u vitičastim zagradama) koji ima jedan parametar (m) i koji se proverava na nil. U slučaju da m nije nil, blok vraća true. Metoda find vraća prvi element niza za koji prosleđeni blok vraća true.
Treća linija: kraj metode.

Dragi Tata 12. 08. 2008. 15:23

Citat:

Originalno napisao robi-bobi (Napišite 58640)
a ovo je super citko, jel?

pazi, PROVALIO sam na drugo citanje,

Slažem se da je nečitko. Ja ga nisam "provalio", mada sam pre jedno tri godine učio Ruby. Perl koristim svakih par meseci i uvek ga učim ispočetka :D

Sa druge strane, Python je baš čitljiv...

cvele 12. 08. 2008. 15:26

e jebiga, jablane... i mene si uspeo da povuces za... jezik.

Aj sad za nas koji nemamo para ni za jeftinije ulaznice objasni poentu predhodnog posta

jablan 12. 08. 2008. 15:34

Citat:

Originalno napisao Dragi Tata (Napišite 58644)
Sa druge strane, Python je baš čitljiv...

Rubi sam počeo da učim baš posle pajtona i priznajem da su me neke stvari u rubiju nervirale. Ne u smislu čitljivosti, već u smislu da se neke stvari mogu napisati na nekoliko načina. Banalan primer: ključna reč return (može ali) ne mora da se navodi, funkcija vraća rezultat poslednjeg iskaza. Takođe, blok može da se uokviri vitičastim zagradama, ali i sa "do"-"end" (neki guideline je da se zagrade koriste u one-linerima, a do-end u multiline blokovima).

Ali, neki, opet, vole mogućnost izbora. Ja sam se navikao, iako mi lično više prijaju striktnije definisane sintakse. Ali ono što sigurno mogu da tvrdim je da je rubi jako intuitivan. Često otkucam neko parče koda za koje nisam siguran da je 100% ispravno, a ono radi. :) Isto važi i za Rails, vrlo je intuitivan za korišćenje.

@cvele: Ne kapiram pitanje? Odgovorio sam robiju na primedbu o čitljivosti i objasnio svoju funkciju, za slučaj da nekog zaista interesuje.

bluesman 12. 08. 2008. 15:52

Jablane, kada se kaze "za one sa jeftinijim ulaznicama" to drugim recima znaci "za one koji ne znaju" (u sarkasticnom prevodu "za glupsone"), i to se obicno koristi kada hoces da budes sarkastican. Nadam se da nisi hteo da budes sarkastican, pa samo preporucujem da pazis kada biras frazu koju ces da upotrebis, posto vidis da ljudi mogu da se uvrede. (evo i smajli da ne mislis da mi dizes pritisak :) )

BTW, po mom skromnom misljenju kada se desi da "često otkucam neko parče koda za koje nisam siguran da je 100% ispravno, a ono radi" to najmanje znaci da je taj jezik intuitivan, da ne kazemo nesto drugo.

jablan 12. 08. 2008. 15:59

Citat:

Originalno napisao bluesman (Napišite 58649)
Nadam se da nisi hteo da budes sarkastican

Nisam. Izvinjavam se svima koji su se našli uvređeni citatom iz Diznijevog crtaća.

Dragi Tata 12. 08. 2008. 16:02

Citat:

Originalno napisao jablan (Napišite 58646)
iako mi lično više prijaju striktnije definisane sintakse.

I meni. Recimo, OCaml mi se ogadio kad sam pročitao ovo:
http://www.ocaml-tutorial.org/the_st...ocaml_programs

(nađi deo: Using and omitting ;; and ; )

Cela nauka dok provališ gde se stavlja ; gde ;; a gde se izostavlja, opciono ili ne.

Takođe, kad radiš u timu, uvek se nađu ljudi različitih ukusa, pa nastanu pravi ratovi gde treba postavljati vitičaste zagrade i da li treba koristiti tabove ili razmake.

Ma Fortran 77 je zakon...

cvele 12. 08. 2008. 16:05

@degojs
Citat:

E kad ja ovaj tvoj primer promenim tako da pise (primeti & ispred $value):

function default_value(&$value, $default = null)

Onda vise ne dobijem Notice.
Pa naravno da ne dobijes. Zato sto je u tvom slucaju varijabla definisana. Kada se prenosi kao referenca onda se radi sa samom varijablom, a ne sa njenom kopijom (koja nije definisana jer je null) kao u Ilijinom slucaju.

bNasty 12. 08. 2008. 16:28

Citat:

Originalno napisao Dragi Tata (Napišite 58651)
OCaml mi se ogadio kad sam pročitao ovo:
http://www.ocaml-tutorial.org/the_st...ocaml_programs

Hehe, Ocaml... i Steve Yegge ga je batalio, nemoj da se muchish :)

Uzmi Ruby, vi'sh kako je intuitivan ;)
Ili MetaLua ako ti nedostaju "what the f..." momenti.

Nemanja Avramović 12. 08. 2008. 16:41

Off Topic: E stvarno ovaj DPT postaje ES, počeće ljudi i odavde da odlaze koliko smarate... :S

Dragi Tata 12. 08. 2008. 16:45

Citat:

Originalno napisao bNasty (Napišite 58655)
Hehe, Ocaml... i Steve Yegge ga je batalio, nemoj da se muchish :)

Ja očigledno imam jeftinu ulaznicu, ali sam se jedva setio ko je taj, mada sam mu i odgovorio na nekoj diskusiji, kad je izlupetao da je VB dinamički jezik:

http://www.artima.com/forums/flat.js...&thread=233000

dinke 12. 08. 2008. 17:00

http://www.elitesecurity.org/f71-Advocacy


Vreme je GMT +2. Trenutno vreme je 04:50.

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.