Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

Videoannonse
Annonse
Dissa UTF greiene er fremmeord for meg, men hva slags fordeler bringer dette?

7785724[/snapback]

Tegnsettet har støtte for de fleste typer tegn (også asiatiske), så man kan bruke det på sider som hvor flere typer skriftspråk blir benyttet, i tillegg til at man slipper slipper problemet med å velge riktig tegnsett.

Lenke til kommentar
Om formålet er error-håndtering, gjør du best i å bruke en custom error handler.  Da får en automatisk inn linjenummer som parameter. :)

7788396[/snapback]

 

:tease: Om formålet er error-håndtering gjør du best i å bruke Exceptions. Da får du alt du trenger på en praktisk og ryddig måte.

Er klar over at dette er smak og behag til en vis grad, men det er ikke uten grunn at Exceptions er de-facto måten og håndtere feil på uansett språk. Nå har jo exceptions i PHP det problemet at PHP internt for det meste bruker et annet system. Selv har jeg ihvertfall fått en enormt forenklet errorhåndtering med exceptions.

Lenke til kommentar

Sorry, exceptions er selvfølgelig beste måten å løse problemer _lokalt_ i koden. Jeg er blitt for vant med å måtte støtte PHP4, så jeg har ikke tøyset for mye med exceptions enda, men for håndtering av direkte kodefeil er vel ikke exceptions beste måten å gå? Exceptions kan vel ikke håndtere parse errors, notices eller warnings som PHP sender ut?

Lenke til kommentar
Om formålet er error-håndtering, gjør du best i å bruke en custom error handler.  Da får en automatisk inn linjenummer som parameter. :)

7788396[/snapback]

 

:tease: Om formålet er error-håndtering gjør du best i å bruke Exceptions. Da får du alt du trenger på en praktisk og ryddig måte.

Er klar over at dette er smak og behag til en vis grad, men det er ikke uten grunn at Exceptions er de-facto måten og håndtere feil på uansett språk. Nå har jo exceptions i PHP det problemet at PHP internt for det meste bruker et annet system. Selv har jeg ihvertfall fått en enormt forenklet errorhåndtering med exceptions.

7790806[/snapback]

De facto standard, og det uannsett språk? Nå må du gi deg her. Snakker vi om java så skal jeg være helt enig (da blir man jo påtvunget det nærmest på samme måte som OOP), men at det er den "allment" foretrukkne metoden andre steder blir litt vel drøyt etter min mening (eller har du kanskje noe kilder på det?). Det finnes flere språk uten exception hvor C og Perl er de to aller mest kjente, og disse står for en ikke ubetydelig del av all programmeringen i verden. Så skal man tenke på at langt fra alle lever så snevert som i java-verden. Faktisk, noen språk gir programmereren noe så sjokkerende som valg ...

 

Kort sagt: C bruker det ikke, Perl bruker det ikke, i PHP bruker langt fra alle det og det samme gjelder mest sannsynligvis C++ også. Dette er sannsynligvis over 1/3-del av all programmeringen i verden.

 

... og det var før jeg begynner med hvor mye exception oppfordrer til latmannsprogrammering og feil i programvaren (Nei, exceptions er nok ikke bare utelukkende positivt).

Lenke til kommentar

Exceptions er unntak, ikke feilhåndtering. Meningen med Exceptions er å kunne sende problemet utover til man når et punkt der man kan håndtere det. Ofte vet ikke en funksjon hva man vil gjøre når en feil oppstår, dermed sender den feilen oppover i hierarkiet til man når et sted der feilen kan håndteres (try-blokk)

Lenke til kommentar

Sa det med exceptions litt for kødd også da... :p

Men å kalle det for defacto uansett språk var vel litt drøyt ja, dog er det jo veldig utstrakt brukt av mange i vertfall de store scriptspråkene

 

At bare 1/5 "hobbyprogrammere" bruker exceptions forundrer meg ikke i det hele tatt, de fleste "hobbyprogrammere" aner vel knapt hva det er og enda mindre hvilke fordeler (eller ulemper) det bringer, men nå mener jeg blant de som kan språket inn og ut og som har gjort et bevisst valg om eventuell bruk av exceptions ut i fra kunnskap/behov og ikke uvitenhet.

 

Nazgul: Exceptions er exceptions (trenger ingen oversettelse...) og er veldig greit å ha med å gjøre når feilen skal håndteres, du kan velge på hvilket nivå du vil håndtere den og det følger med et backtrace API og integreres godt i OOP.

Mye mer praktisk enn å sette opp en funksjon på globalt basis som skal motta alt av feil.

 

I hvilken grad exceptions innbyr til "latmannsprogrammering" kan jo diskuteres, men vis alternativet er å putte if-tester i koden både her og der bare for feilhåndteringen sin skyld så vil jeg kalle det for "kløneprogrammering".

Har f.eks sett veldig mange som konstant putter alt av dbquery-funksjoner i en if-test for å sjekke om noe går gærent, med exceptions kan man spare seg alle disse if-testene og samtidig snappe opp feil som teoretisk kan oppstå.

Og sånne if-tester blir jo gjerne etterfulgt av "else" og da blir det fort til et hoppløst spindelvev hvor store deler av koden ikke har det spor for seg i å utføre den oppgaven som var meningen.

Lenke til kommentar
Sa det med exceptions litt for kødd også da... :p

Men å kalle det for defacto uansett språk var vel litt drøyt ja, dog er det jo veldig utstrakt brukt av mange i vertfall de store scriptspråkene

7793948[/snapback]

Begynte å lure litt :yes: Uannsett er det nok iallfall svært utbredt i java.

I hvilken grad exceptions innbyr til "latmannsprogrammering" kan jo diskuteres, men vis alternativet er å putte if-tester i koden både her og der bare for feilhåndteringen sin skyld så vil jeg kalle det for "kløneprogrammering".

Har f.eks sett veldig mange som konstant putter alt av dbquery-funksjoner i en if-test for å sjekke om noe går gærent, med exceptions kan man spare seg alle disse if-testene og samtidig snappe opp feil som teoretisk kan oppstå.

Og sånne if-tester blir jo gjerne etterfulgt av "else" og da blir det fort til et hoppløst spindelvev hvor store deler av koden ikke har det spor for seg i å utføre den oppgaven som var meningen.

7793948[/snapback]

Altså, klart, exception kan føre til mye positivt forutsatt at det blir gjort riktig, men det kan også føre til problemer.

try { 
    file_open(filename) 
    file_write(filename, data) 
    file_close(filename) 
} catch (FILE_ERROR) { 
    print("Sorry, can't save.") 
}

Koden over kan få systemet til å krasje, og det er ikke helt åpenbart for alle vil jeg tro. Hva er så feilen? Jo, sett at filen bare er lesbar. Da vil den krasje når den skal skrive, men systemet vil fortsette å fungere. Problemet er bare det at filen fortsatt er åpen og hva skjer når OSet ikke kan allokere flere filpeker? Jo, systemet krasjer.

 

Videre er det alt for mange som har den holdningen at når de ser en feil så løser de den ikke, de bare slenger inn litt exception og håper på det beste med det resultatet at ting funker en stund og plutselig står alt dønn stille.

 

En siste ting er at man strengt tatt ikke alltid trenger exception. Skal du til en spesiell butikk e.l og du veit ikke om den er oppe så går du forhåpentligvis ikke dit direkte, du ringer kanskje og hører om de fortsatt er oppe. Med andre ord, hvorfor forsøke å kjøre kode med åpenbart idiotiske parametere når man kan sjekke det på forhånd.

Endret av Ernie
Lenke til kommentar
Problemet er bare det at filen fortsatt er åpen og hva skjer når OSet ikke kan allokere flere filpeker? Jo, systemet krasjer.

Veeeel, det er ikke exceptions som er problemet her, bare bruken. Vi kan for eksempel gjøre:

try {
   file_open(filename)
   file_write(filename, data)
} catch (FILE_ERROR) {
   print("Sorry, can't save.")
} finally {
   file_close(filename)
}

Uansett er det jo slikt man har closures til . :p

begin
 File.open('hello','w') {|file| file.write 'Hi'}
rescue Errno::EACCES => msg
 puts msg
end

Lenke til kommentar
  • 4 uker senere...

Poster her i forsøk på å få igang puben igjen.

 

Hvilken er den beste måten å hente filer (ikke store filer ~10kb) fra andre servere via http protokollen? fopen, file_get_contents, curl eller fsocket funksjonene?

 

fopen og file_get_contents er jo enklest, men de fungerer bare hvis wrappers er aktivert. Curl er ikke alltid installert på diverse servere, så fsocket? Noen som har noen inspill?

Lenke til kommentar
Poster her i forsøk på å få igang puben igjen.

 

Hvilken er den beste måten å hente filer (ikke store filer ~10kb) fra andre servere via http protokollen? fopen, file_get_contents, curl eller fsocket funksjonene?

 

fopen og file_get_contents er jo enklest, men de fungerer bare hvis wrappers er aktivert. Curl er ikke alltid installert på diverse servere, så fsocket? Noen som har noen inspill?

7970586[/snapback]

 

De gangene jeg ikke har kunnet bruke fopen/file_get_contents pga. allow_url_fopen satt til disabled, har jeg brukt fsock og fgets. Funker ganske fint, egentlig, men som alle operasjoner over HTTP er det ganske mye latency involvert. Om det er mulig å cache, bør du gjøre det. :)

Endret av jorgis
Lenke til kommentar

Jeg har lagd en webcrawler til en søkemotor (den har egentlig en ny side nå), siden det ikke går an å bruke full url i f. eks file_get_contents. Derfor måtte han andre som er med på prosjektet få et subdomene hos en fyr han kjenner (tror jeg det var). Hehe...

 

 

Så siden jeg lagde den hos Hotserv.dk så er det kommet 34 sider inn (folk som har lagt inn automatisk), og hos han andre (lagde ferdig crawleren i dag), har det kommet ca...MANGE! Scrollbaren kunne vel ikke vært mindre, hehe... En lang lang lang liste nedover. Regner med at han (eller jeg), putter på slik pagination på den sida.

Lenke til kommentar

Er det noen måte å bare skrive det første ordet i en tekst string?

 

Har dette scriptet nå, men det begrenser bare antall bokstaver:

 

  	$show = $categories[$i]->getName();
 	$length = 50; // hvor lang skal strengen vaere?
 	$show = rawurldecode($show); // dekode strengen din
 	
 	if (strlen($show) > $length) {$trailing = "...";} // sjekker lengde foer begrensning
 	
 	$show = substr($show,0,$length); // begrense til $length bokstaver
 	$show = ucfirst($show); // formatering
 	
 	if (!empty($trailing)) {$show .= $trailing;} // evt. legg til $trailing

 

Edit:

 

Fant et script selv:

 

  	$txtarray = explode(" ", $categories[$i]->getName());
 	$antallord = count($txtarray);
 	$kutt = 1;
 	
 	if ($antallord > $kutt) {
 	$txtarray = array_slice($txtarray, 0, $kutt);
 	}
 	
 	$testtext = implode(" ", $txtarray);

Endret av Garreth
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...