[alg] Slechtste programmeervoorbeelden deel 4 Vorige deel Overzicht Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 9 ... 103 Laatste
Acties:
  • 993.547 views

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Ik weet niet of het hier thuishoort, maar php 5.3 zal namespaces introduceren. Hebben jullie de syntax al gezien? Backslash (\) als separator :+

PHP:
1
namespace Foo\Bar;

March of the Eagles


Acties:
  • 0 Henk 'm!

Verwijderd

Want :: of . is natuurlijk saai. Dat doen al die andere talen al. :P

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hacku schreef op woensdag 25 maart 2009 @ 23:22:
Ik weet niet of het hier thuishoort, maar php 5.3 zal namespaces introduceren. Hebben jullie de syntax al gezien? Backslash (\) als separator :+

PHP:
1
namespace Foo\Bar;
Die is wel goed bedacht ja. Laten ze vooral @random tekens verzinnen voor functionaliteiten die al in andere talen bestaan en daar met andere karakters worden geïnitieerd. Toch blijf ik php wel gebruiken hoor :p
Verwijderd schreef op woensdag 25 maart 2009 @ 23:25:
Want :: of . is natuurlijk saai. Dat doen al die andere talen al. :P
Die zijn al in gebruik (al weet ik te weinig van php om te bepalen of beide ook dubbel gebruikt kunnen worden):
PHP:
1
2
3
4
5
$concat = $string1 . $string2;
class Test{
  public static function foo(){ echo 'Bar'; }
}
Test::foo();

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Daar is hier al een topic over gevoerd. Het punt is dat PHP z'n identifier namespaces (z'n interne namespaces, niet de "namespace" feature :)) gescheiden houdt. Een identifier kan dus zowel een constante als een functie, een class of een namespace aanduiden. De operator die je erop los laat maakt vervolgens duidelijk wat je bedoelt. Haakjes erachter betekent een functie, de identifier gebruiken als een variabele betekent een constante, de new of :: operator betekent een class, en vandaar dus de \ operator voor de namespace.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
define ("foo", "constant");
function foo() { return "function"; }
class foo { function __construct() { echo "class"; } }

namespace foo
{
    $var = 3;
}

echo foo;
echo foo();
new foo();
echo foo\$var;

Woei -O-

[ Voor 3% gewijzigd door .oisyn op 25-03-2009 23:37 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Daar is hier al een topic over gevoerd.
Die heb ik gemist, heb je de url nog ergens?
Woei -O-
Ik droom nog steeds van deze constructie:

PHP:
1
2
3
4
5
6
7
8
9
function blaat ()
{
    return array ( 'test', 'test2' );
}

echo blaat()[0]; // werkt niet

$temp = blaat();
echo $temp[0]; // werkt wel

March of the Eagles


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hacku schreef op woensdag 25 maart 2009 @ 23:39:

Die heb ik gemist, heb je de url nog ergens?
PHP Namespaces :)
Ik droom nog steeds van deze constructie:
Pff kan dat nog steeds niet? :N

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hacku schreef op woensdag 25 maart 2009 @ 23:39:
[...]


Die heb ik gemist, heb je de url nog ergens?
PHP Namespaces :)

Hier nog het document met de proposal.
[...]


Ik droom nog steeds van deze constructie:

PHP:
1
2
3
4
5
6
7
8
9
function blaat ()
{
    return array ( 'test', 'test2' );
}

echo blaat()[0]; // werkt niet

$temp = blaat();
echo $temp[0]; // werkt wel
Is dat dan by design zo? Ik heb er inderdaad wel last van, maar heb me er nooit zo druk om gemaakt :p

/edit: net te laat...

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
.oisyn schreef op woensdag 25 maart 2009 @ 23:42:
[...]
Pff kan dat nog steeds niet? :N
Nope :(

March of the Eagles


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
ik heb op een gegeven moment uit ellende een getElementFrom functie geschreven om dat probleem te omzeilen, ik was toen een naar 'arrays' (noem dat ding een hashmap als het zo werkt |:() omgezet XML-bestand aan het uitlezen. Echt heel leuk is het dan als je alles moet omzetten naar een tijdelijke variabele om element X eruit te halen. Dan maar zoiets, wat wel mag:
PHP:
1
getElementAt(5, $array['iets'][0]['ietsanders'].getAttributes());

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Beetje laat maar imho de beste while(true) variant die er is:

Visual Basic:
1
2
3
infiniteloop:
  'do stuff
goto infiniteloop


:+

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

roy-t schreef op donderdag 26 maart 2009 @ 11:14:
Beetje laat maar imho de beste while(true) variant die er is:

Visual Basic:
1
2
3
infiniteloop:
  'do stuff
goto infiniteloop


:+
Laten we de C#, de C/C++, de Basic, de Delphi, [insert taal], en de Chrome versie niet vergeten :+ Googlen mag je zelf doen. Goto is geloof ik het enige statement dat in alle talen hetzelfde eruit ziet, zelfs in TI basic :P

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sebazzz schreef op donderdag 26 maart 2009 @ 12:41:
[...]

Laten we de C#, de C/C++, de Basic, de Delphi, [insert taal], en de Chrome versie niet vergeten :+ Googlen mag je zelf doen. Goto is geloof ik het enige statement dat in alle talen hetzelfde eruit ziet, zelfs in TI basic :P
Toch is het in C#, C en C++ anders.
code:
1
2
3
infiniteloop: 
  //do stuff 
goto infiniteloop;

;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Woy schreef op donderdag 26 maart 2009 @ 12:44:
[...]

Toch is het in C#, C en C++ anders.
code:
1
2
3
infiniteloop: 
  //do stuff 
goto infiniteloop;

;)
Wat is dan het verschil op de puntkomma na? ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sebazzz schreef op donderdag 26 maart 2009 @ 16:57:
[...]

Wat is dan het verschil op de puntkomma na? ;)
Het commentaar ;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
roflzofl.

PHP:
1
namespace c\windows\system32\fietsbel


Ik citeer:

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Maakt commentaar uit van een statement dan :P Strikt genomen is het commentaar hetzelfde, alleen de syntaxis is anders van het commentaar.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

PHP updates :') Steeds weer een nieuw stukje kauwgum om de gaten in het zinkende schip te dichten ;)

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Zoijar schreef op donderdag 26 maart 2009 @ 17:48:
PHP updates :') Steeds weer een nieuw stukje kauwgum om de gaten in het zinkende schip te dichten ;)
Dat denk ik soms ook. Ik vind dat Microsoft met de Visual Studio/.NET combinatie een ijzersterk ontwikkelplatform in handen heeft, dus PHP is inderdaad een zinkend schip wat dat betreft.
.NET is sterk, vooral omdat heel veel talen zijn te '.NETten'. C#.NET, VB.net, Python.NET, A#.NET, Ruby.NET, Delphi.NET. Hiermee kan je heel veel programmeurs aantrekken, en met de sterke debugger van VS maak je het ontwikkelen ook nog eens leuk :)

[ Voor 10% gewijzigd door Sebazzz op 26-03-2009 18:19 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 04-09 19:14
Sebazzz schreef op donderdag 26 maart 2009 @ 12:41:
[...]

Laten we de C#, de C/C++, de Basic, de Delphi, [insert taal], en de Chrome versie niet vergeten :+ Googlen mag je zelf doen. Goto is geloof ik het enige statement dat in alle talen hetzelfde eruit ziet, zelfs in TI basic :P
In C/C++ in combinatie met VxWorks is het nog makkelijker :+
code:
1
2
3
FOREVER {

}


Ik win >:)

Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 09-09 15:21
ThunderNet schreef op woensdag 25 maart 2009 @ 15:40:
[...]

Maar dat is niet interresant... Naar hoeveel assembly-code wordt het gecompileerd, dat is interresanter om te weten :)
Eventjes nagekeken door twee simpele programmatjes te maken in C:

C:
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main() {

  for (;;) {
    break;
  }

  return 0;
}


C:
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main() {

  while(1) {
    break;
  }

  return 0;
}


Resulteert in dezelfde assembly-code:

code:
1
2
3
4
5
6
7
8
9
10
    .text
.globl _main
_main:
    pushl   %ebp
    movl    %esp, %ebp
    subl    $8, %esp
    movl    $0, %eax
    leave
    ret
    .subsections_via_symbols

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

De discussie over PHP is afgesplitst naar Vanwaar het PHP bashen.

--edit @hieronder--
Ik heb enkel de discussie afgesplitst die ontstond na de opmerking van Cartman!.

[ Voor 120% gewijzigd door Janoz op 27-03-2009 19:14 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
@Janoz: je bent er nog een paar vergeten, PHP komt hier veel vaker langs dan alleen de laatste 4 :X pagina's.

Binnenkort ook een voorbeeld van mij ben ik bang, om een javabestand van 30KB te analyseren heb ik niet genoeg aan 128MB geheugen :'( En ja, ga dat maar eens debuggen... performance-analyse brengt Eclipse op z'n knieën |:( 't komt erop neer dat ik bij 10 mogelijkheden alle permutaties bijhoud (3K), maar dat ik die string toch 27K keer opsla. Bij de eerstvolgende permutatie (verdubbeling van het geheugengebruik hiervoor, theoretisch 3MB) neemt het geheugengebruik met meer dan 60MB toe 8)7
* MBV blames Java :Y)

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

MBV schreef op vrijdag 27 maart 2009 @ 17:41:
@Janoz: je bent er nog een paar vergeten, PHP komt hier veel vaker langs dan alleen de laatste 4 :X pagina's.

Binnenkort ook een voorbeeld van mij ben ik bang, om een javabestand van 30KB te analyseren heb ik niet genoeg aan 128MB geheugen :'( En ja, ga dat maar eens debuggen... performance-analyse brengt Eclipse op z'n knieën |:( 't komt erop neer dat ik bij 10 mogelijkheden alle permutaties bijhoud (3K), maar dat ik die string toch 27K keer opsla. Bij de eerstvolgende permutatie (verdubbeling van het geheugengebruik hiervoor, theoretisch 3MB) neemt het geheugengebruik met meer dan 60MB toe 8)7
* MBV blames Java :Y)
http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp Speel hier eens mee?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Ben ik al mee bezig geweest, maar als je 1000MB wilt opslaan op een machine met 1GB geheugen dan krijg je óf baggerperformance (swap-swap-swap) óf een out-of-memory exception.

Oh ja, de JVM doet al aardig zijn best: ik zie net dat ik die node (printf debugging FTW :Y)) 700.000 keer kopieer :P Probleem is dat ik een boom maak, en de standaard java-boom-classes dit doen:

Java:
1
2
3
4
5
6
7
DefaultMutableTreeNode x = new DefaultMutableTreeNode("x");
DefaultMutableTreeNode y = new DefaultMutableTreeNode("y");
DefaultMutableTreeNode z = new DefaultMutableTreeNode("z");

y.add(x); // y heeft x, z heeft niks

z.add(x); // z heeft x, y heeft niks

Dus ik ben een beetje voorzichtig ;) Misschien gewoon die DefaultMutableTreeNode weggooien en de interface implementeren ofzo :(

[edit]
Inderdaad, 't gaat helemaal fout. greppen laat zien dat true/false niet symmetrisch is, waar dat wel zou moeten :( 4000 true, 23486 false. Die 4000 komt nog in de buurt...

[ Voor 73% gewijzigd door MBV op 27-03-2009 18:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

MBV schreef op vrijdag 27 maart 2009 @ 17:58:
Java:
1
2
3
4
5
6
7
DefaultMutableTreeNode x = new DefaultMutableTreeNode("x");
DefaultMutableTreeNode y = new DefaultMutableTreeNode("y");
DefaultMutableTreeNode z = new DefaultMutableTreeNode("z");

y.add(x); // y heeft x, z heeft niks

z.add(x); // z heeft x, y heeft niks
DefaultMutableTreeNode kan maar 1 parent hebben (En daardoor ook maar in 1 tree model voorkomen); Use the source luke :) :

DefaultMutableTreeNode:
Java:
1
2
    /** this node's parent, or null if this node has no parent */
    protected MutableTreeNode   parent;


Denk inderdaad dat je door het implementen van de MutableTreeNode interface beter je doel van multiple parents kan bereiken.

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

dev10 schreef op donderdag 26 maart 2009 @ 19:22:
Eventjes nagekeken door twee simpele programmatjes te maken in C:

Resulteert in dezelfde assembly-code:

code:
1
2
3
4
5
6
7
8
9
10
    .text
.globl _main
_main:
    pushl   %ebp
    movl    %esp, %ebp
    subl    $8, %esp
    movl    $0, %eax
    leave
    ret
    .subsections_via_symbols
Haha, ja doh, hij optimaliseert die hele loop eruit :) Dit is gewoon de stack setup van main() en dan de return van 0 (in eax)

(maar dan nog zal je wel gelijk hebben, alleen de manier van aantonen klopt niet ;) )

[ Voor 8% gewijzigd door Zoijar op 29-03-2009 21:40 ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Verwijderd schreef op zondag 29 maart 2009 @ 20:01:
[...]


DefaultMutableTreeNode kan maar 1 parent hebben (En daardoor ook maar in 1 tree model voorkomen); Use the source luke :) :

DefaultMutableTreeNode:
Java:
1
2
    /** this node's parent, or null if this node has no parent */
    protected MutableTreeNode   parent;


Denk inderdaad dat je door het implementen van de MutableTreeNode interface beter je doel van multiple parents kan bereiken.
Dan nog gaat het vaak niet helpen, omdat ik vaak niet kan gebruiken dat bij aanpassen van 1 node in de tree, de andere mee verandert. Ik zat meer te denken aan een overload van de add-method: if (node.parent != null) then copy; else node.parent = this; ofzo.
[/zwaar offtopic]

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
HTML:
1
<noscript><div class="message" onclick="this.style.display='none'">[enz.]


Niet de slechtste, maar wel een beetje knullig :+. Gelukkig bedacht ik me toen ik er nog eens goed naar keek.

Acties:
  • 0 Henk 'm!

  • Tiemez
  • Registratie: December 2003
  • Laatst online: 24-10-2022
mcDavid schreef op dinsdag 31 maart 2009 @ 22:13:
HTML:
1
<noscript><div class="message" onclick="this.style.display='none'">[enz.]


Niet de slechtste, maar wel een beetje knullig :+. Gelukkig bedacht ik me toen ik er nog eens goed naar keek.
http://thedailywtf.com/Ar...JavaScript-Detection.aspx

die is leuker :P

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Oe, das wel echt n hele mooie inderdaad :+

Het 'false' returnen bij geen JS, je snapt ook echt niet hoe het verzonnen wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

Weet niet of SQL ook onder "programmeervoorbeelden" vallen.. :+

Ik volg tegenwoordig de course "Database Applications" op een HBO school. Hier leren we dus op dit moment SQL, maar... is dit HBO niveau te noemen? :')

"Geef stuknummer, titel en speelduur van het kortste stuk."
SQL:
1
2
3
4
5
SELECT  stuknr, titel, speelduur
FROM    Stuk
WHERE   speelduur <= ALL 
    (SELECT speelduur FROM Stuk
     WHERE speelduur IS NOT NULL)


Dit is een van de vele bagger query's uit een PPT, was toch wel even een "klein" WTF-momentje... :+

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op woensdag 01 april 2009 @ 15:09:
Weet niet of SQL ook onder "programmeervoorbeelden" vallen.. :+

Ik volg tegenwoordig de course "Database Applications" op een HBO school. Hier leren we dus op dit moment SQL, maar... is dit HBO niveau te noemen? :')

"Geef stuknummer, titel en speelduur van het kortste stuk."
SQL:
1
2
3
4
5
SELECT  stuknr, titel, speelduur
FROM    Stuk
WHERE   speelduur <= ALL 
    (SELECT speelduur FROM Stuk
     WHERE speelduur IS NOT NULL)


Dit is een van de vele bagger query's uit een PPT, was toch wel even een "klein" WTF-momentje... :+
:X

Weet je zeker dat het niet een voorbeeldje was van hoe het niet moest?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

order by speelduur asc limit 1 lijkt me ook makkelijker... sneller weet ik niet, die query optimizers zijn raar; het is soms net een soort voodoo hoe snel ze de grootste bagger nog krijgen. Slimme beestjes.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op woensdag 01 april 2009 @ 15:23:
order by speelduur asc limit 1 lijkt me ook makkelijker... sneller weet ik niet, die query optimizers zijn raar; het is soms net een soort voodoo hoe snel ze de grootste bagger nog krijgen. Slimme beestjes.
Idd, voor hetzelfde geld maakt de optimizer er precies hetzelfde van. Echter lijkt me het voor de leesbaarheid ook beter om het met een limit te doen.

Het enige nadeel is dat limit per RDBMS weer anders werkt. Dus dat is mischien een reden dat ze het niet gebruikt hebben.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
Volgens mij is er voor top-N queries geen standaard, en gebruikt elk DBMS zijn eigen syntax.@Woy: ikke langzaam typen :)

En zolang je geen b-tree-achtige index op speelduur hebt dan zal je alsnog de hele tabel moeten inlezen en ben je met de subquery-oplossing niet eens zo heel veel slechter af. Niet dat dat een sluitend argument voor het gebruik van een subquery is, maar toch. ;)

[ Voor 5% gewijzigd door netvor op 01-04-2009 15:35 ]

Computer Science: describing our world with boxes and arrows.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

De limit methode is ook niet equivalent, aangezien die altijd maar 1 stuk teruggeeft. Als er meerdere kortste stukken zijn dan krijg je die nu allemaal.

Het schoolvoorbeeld is trouwens:
SQL:
1
2
3
SELECT  stuknr, titel, speelduur 
FROM    Stuk 
WHERE   speelduur = (SELECT MIN(speelduur) FROM Stuk)

Ongeoptimaliseerd is dit O(n), die met die ANY was O(n2). De b-tree gaat je ook alleen maar helpen als de optimizer snapt dat ie alsnog het minimum moet nemen bij de ANY query of als ie b-tree overhevelt naar de temporary table die hij voor de ANY query gegenereerd heeft.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Jewest
  • Registratie: Juni 2007
  • Laatst online: 11-09 16:30
code:
1
2
3
4
void main()
{
 main();
}

Flickr
Canon 7D + Glas + Licht
Komt het rot over dan bedoel ik het anders en taalfouten zijn inbegrepen.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou even mijn SQL op moete frissen, maar mag het ook niet op deze manier
SQL:
1
2
3
SELECT  stuknr, titel, speelduur  
FROM    Stuk  
HAVING speelduur = MIN(speelduur)

Uiteindelijk komt dat natuurlijk op hetzelfde neer, maar het is eenvoudiger te schrijven
[disclaimer]
Mijn SQL is een beetje roestig
[/disclaimer]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Jewest schreef op woensdag 01 april 2009 @ 15:50:
code:
1
2
3
4
void main()
{
 main();
}
Geeft niets, compilet gelukkig toch niet :Y)

@Woy: een HAVING zonder GROUP BY? :N

[ Voor 73% gewijzigd door .oisyn op 01-04-2009 15:53 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op woensdag 01 april 2009 @ 15:52:
[...]
@Woy: een HAVING zonder GROUP BY? :N
Daarom de disclaimer ;), ik zag idd in de docs dat dat niet kan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

@paar hierboven:
De omschrijving: "Geef stuknummer, titel en speelduur van het kortste stuk.".
Dus het gaat dus om één stuk. ;)
Woy schreef op woensdag 01 april 2009 @ 15:20:
[...]

:X

Weet je zeker dat het niet een voorbeeldje was van hoe het niet moest?
Ja, heel zeker.. Ook geen 1 april grap, want 't was gister... :+

Waarom heb ik het idee dat het volgende ook niet helemaal optimaal is? :')
"Geef stuknummer en titel van alle stukken die gecomponeerd zijn door een docent van een Amsterdamse muziekschool."
SQL:
1
2
3
4
5
6
7
8
9
SELECT stuknr, titel
FROM Stuk
WHERE componistId IN 
    (SELECT componistId 
     FROM Componist 
     WHERE schoolId IN 
        (SELECT schoolId 
         FROM Muziekschool 
         WHERE plaatsnaam = "Amsterdam"));



Het resultaat was ook heel mooi te zien toen we de opgaven gingen maken, wat daar allemaal uit kwam... :o

[ Voor 15% gewijzigd door Verwijderd op 01-04-2009 16:02 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op woensdag 01 april 2009 @ 15:58:
s
[...]

Ja, heel zeker.. Ook geen 1 april grap, want 't was gister... :+

Waarom heb ik het idee dat het volgende ook niet helemaal optimaal is? :')
SQL:
1
2
3
4
5
6
7
8
9
SELECT stuknr, titel
FROM Stuk
WHERE componistId IN 
    (SELECT componistId 
     FROM Componist 
     WHERE schoolId IN 
        (SELECT schoolId 
         FROM Muziekschool 
         WHERE plaatsnaam = "Amsterdam"));


Het resultaat was ook heel mooi te zien toen we de opgaven gingen maken, wat daar allemaal uit kwam... :o
Ze zijn blijkbaar gewoon nog niet bij het hoofdstuk Joins beland. Maar dit soort dingen zal door de meeste optimizers wel goed opgepakt worden.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Woy schreef op woensdag 01 april 2009 @ 16:01:
[...]

Ze zijn blijkbaar gewoon nog niet bij het hoofdstuk Joins beland. Maar dit soort dingen zal door de meeste optimizers wel goed opgepakt worden.
Jawel, dit was het laatste hoofdstuk. :P

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Haha, ik heb het verschil tussen die twee "kortste speelduur" queries nog even getest. Tabel met 1,6 miljoen records, geen index op de "speelduur".

query van oisyn met subquery min(): 2032 rows returned in 433ms
het slechte voorbeeld met <= ALL: na 5 minuten nog geen resultaat en een abort gedaan :P

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op woensdag 01 april 2009 @ 21:20:
Haha, ik heb het verschil tussen die twee "kortste speelduur" queries nog even getest. Tabel met 1,6 miljoen records, geen index op de "speelduur".

query van oisyn met subquery min(): 2032 rows returned in 433ms
het slechte voorbeeld met <= ALL: na 5 minuten nog geen resultaat en een abort gedaan :P
Dan ben ik ook wel benieuwd wat het doet als je er wel een index op hebt, en met welk RDBMS je getest hebt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 03:41

Patriot

Fulltime #whatpulsert

Woy schreef op woensdag 01 april 2009 @ 15:55:
[...]

Daarom de disclaimer ;), ik zag idd in de docs dat dat niet kan.
Wel als je MySQL gebruikt O-) :+

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ben bezig met een paper en kom net deze leuke auto correctie feature tegen:

Afbeeldingslocatie: http://cinna.pandemic.nl/~greyfox/wordsnafu.jpg

handig...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Papers schrijven doe je met LaTeX :Y)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Topicstarter
prototype schreef op donderdag 02 april 2009 @ 02:27:
Papers schrijven doe je met LaTeX :Y)
Oeh, dat herinnert me aan mijn stageverslag. De eerste keer dat ik echt lol had aan het schrijven van een verslag omdat het ook een soort programmeren was. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Laat ik nu net aan het afstuderen zijn en al mijn documenten in LaTeX schrijven :)

LaTeX rocks!

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Heuj wie heeft "Programmeren voor dummies" aan dit topic gelinked! :(

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 14-09 07:13

Haan

dotnetter

LaTeX ftw inderdaad! Al heb ik er ook soms ruzie mee, vooral als je een tabel moet maken die je in Word zo uit de grond stampt, maar in LaTeX kan dat een pain-in-the-*ss zijn :P

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Haan schreef op donderdag 02 april 2009 @ 08:31:
LaTeX ftw inderdaad! Al heb ik er ook soms ruzie mee, vooral als je een tabel moet maken die je in Word zo uit de grond stampt, maar in LaTeX kan dat een pain-in-the-*ss zijn :P
Tabellen in LaTeX zijn vooral moeilijk wanneer je er andere dingen mee wil doen dan tabulaire data in stoppen. Gewoon wat getalletjes gaat prima, zeker met een goede editor.

Wil je bijvoorbeeld een tabel maken met overwegingen, criteria en ratings voor een bepaald ontwerp, dan is dat best lastig. Ik bedenk altijd: als een tabel maken lastig is, is een tabel dan wel een goed idee? Daarmee kom je tot soms betere formats om je dingen op te schrijven :)

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Woy schreef op woensdag 01 april 2009 @ 22:19:
Dan ben ik ook wel benieuwd wat het doet als je er wel een index op hebt, en met welk RDBMS je getest hebt.
Nog even opnieuw getest voor je, alleen met die min() subquery

Postgresql 8.3.7
no-index: 2164 rows returned in 450ms
index: 2164 rows returned in 125ms

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op donderdag 02 april 2009 @ 09:56:
[...]

Nog even opnieuw getest voor je, alleen met die min() subquery

Postgresql 8.3.7
no-index: 2164 rows returned in 450ms
index: 2164 rows returned in 125ms
Nou was ik vooral benieuwd naar de andere query met index ;), ik ben benieuwd of hij hem dan een beetje fatsoenlijk optimaliseerd.

Gelukkig gebruik je geen MySql, Postgresql heeft volgens mij een stuk betere optimizer

[ Voor 9% gewijzigd door Woy op 02-04-2009 10:00 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
this.setTroll(true);
Met als "voordeel" dat je je in MySQL geen zorgen hoeft te maken over het wel of niet hebben van een geschikte index... het is allemaal even traag. :+

Computer Science: describing our world with boxes and arrows.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Dat zie je verkeerd: bij MySQL heeft juist díe index waarvan je denkt dat hij nooit effect kán hebben, het meeste effect. Zie die maar eens te vinden :+

Verwacht bij MySQL net zo goed een verschil tussen 3ms en 5 minuten op grote datasets tussen wel/niet optimaliseren. Daarbij helpen de indexen, maar ook de 481 instellingen uit de mysql-configuratie (standaard gebruikt een dedicated server 200MB van de 2GB beschikbaar |:()

Acties:
  • 0 Henk 'm!

Verwijderd

Och, als ik nu terugkijk op de code die ik van 3 jaar terug tot een maand terug geschreven heb zou ik zo dit halve topic vol kunnen gooien.

Liever nu op t HBO blunderen dat ik me er achteraf om kan gaan schamen dan dat ik nu alles perfect maak en dr geen fuck van leer

:+
nee, en ik ga het níet posten

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Wat is dat nou voor instelling. -O- Daar is dit topic toch juist voor?

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
MBV schreef op donderdag 02 april 2009 @ 14:33:
Dat zie je verkeerd: bij MySQL heeft juist díe index waarvan je denkt dat hij nooit effect kán hebben, het meeste effect. Zie die maar eens te vinden :+
De echte explain held heeft niet zo veel moeite met indexje leggen hoor. :z
Daarbij helpen de indexen, maar ook de 481 instellingen uit de mysql-configuratie (standaard gebruikt een dedicated server 200MB van de 2GB beschikbaar |:()
De default settings zijn inderdaad een beetje conservatief gebaseerd op hardware uit 2001. Maar dan nog: Iedereen die blndelings met de default config start heeft het recht niet om te zeiken over performance.

{signature}


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 99% gewijzigd door ? ? op 25-01-2013 09:46 ]


Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 13-09 21:30
era.zer schreef op donderdag 02 april 2009 @ 15:53:
Nog eentje van mij uit de oude doos toen classic ASP nog hip was en ik nog geen diploma had... :P

code:
1
2
Dim tabData(10000, 30)
'10000 should be more than enough

8)
Bill Gates: "640K ought to be enough for anyone" :D

Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Mastermind schreef op donderdag 02 april 2009 @ 16:44:
[...]
Bill Gates: "640K ought to be enough for anyone" :D
}:|

Ben niet echt thuis in vb6, wat definieer je eigenlijk met Dim tabData(10000, 30)?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mastermind schreef op donderdag 02 april 2009 @ 16:44:
[...]


Bill Gates: "640K ought to be enough for anyone" :D
Wat ie alleen nooit heeft gezegd.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
Boeboe schreef op donderdag 02 april 2009 @ 16:50:
[...]


}:|

Ben niet echt thuis in vb6, wat definieer je eigenlijk met Dim tabData(10000, 30)?
Volgens mij een 2-dimensionale array van 10000x30

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Voutloos schreef op donderdag 02 april 2009 @ 15:03:
[...]
De echte explain held heeft niet zo veel moeite met indexje leggen hoor. :z
Dat ben ik dan kennelijk niet :X Ik weet best wel wat explain doet, maar soms lukt het echt niet om een query snel te krijgen. Tot je iets anders oplost, en dan is die query ineens ook erg snel.
[...]
De default settings zijn inderdaad een beetje conservatief gebaseerd op hardware uit 2001. Maar dan nog: Iedereen die blndelings met de default config start heeft het recht niet om te zeiken over performance.
Een default config zou op z'n minst een beetje in de buurt moeten komen. Of er zou een configuratie bij moeten zitten als alternatief, voor het geval je 2GB geheugen wilt reserveren. Of er zou een wizzard moeten zitten in de installatie die vraagt hoeveel geheugen MySQL ongeveer mag pakken en nog wat relevante vragen.

De databaseserver van mijn vorige baas bleek dus helemaal standaard te staan, wat vervelend werd toen de site echt door z'n knieën ging. Dé oplossing: de statische CSS pagina niet dynamisch genereren, scheelde de helft van de requests :+

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

MBV schreef op donderdag 02 april 2009 @ 21:04:
Dé oplossing: de statische CSS pagina niet dynamisch genereren, scheelde de helft van de requests
Caching ;)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Jij hebt duidelijk die codebase niet gezien :X Alles werd via index.php doorgeschoten naar de 'back end'. Ik heb die caching als volgt opgelost:
- alles includen wat voor sessies nodig is
- alles wat nodig is om speciale url's te vertalen naar id's doen
- nog wat zooi
- roep caching-functie aan
- ga verder met hoe het was

caching-functie checkte of het ID overeenkwam met 81 of 34 (CSS en JS bestanden), en die uit ../cache/ uitspugen met de goede headers, gevolgd door een die(). De index wilde ik ook cachen, maar dat ging mis: de pagina voor interne IP-adressen werd per ongeluk naar buiten getoond... En de CSS en JS scheelde al genoeg.

Het ergste komt nog: er zat een caching-mechanisme in, wat alleen werkte voor het diepst genestte element uit de recursieve templates :X Voorpagina is 16 requests ofzo, die niet te combineren zijn omdat je nooit weet welk template er in een ander template staat. En die caching heeft door een foutje van mij een jaar uitgestaan, zonder meetbaar verschil.

@voorganger: SHOOT YOU!
[/frustratie]

Oh ja, MySQL caching had ook nauwelijks effect, omdat de queries iets te vaak verschilden, en allemaal van 100 tabellen afhingen. Tabellen die 1-op-1 uit het ERP werden gerepliceerd. 't Leuke daaraan is dat mijn collega voor een nieuwe applicatie ineens wist hoe je een view kon maken...
[/meer frustratie]

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Om maar is even een slecht programmeer (hoewel, eerder S.D.) voorbeeld te geven van mezelf.

Lang lang geleden toen ik nog maar net programmeerde vond een bedrijfje waar ik af en toe Windows XP opnieuw installeerde dat ik zo knap was met computers en of ik niet een programmatje voor ze kon schrijven. Een kleine database met wat dingetjes, zouden maar 1 of 2 mensen gebruiken. Trots als ik was ging ik aan de gang, om na een paar maanden *bedrijfsnaam database 1.0* op te leveren. Het werkte allemaal prima, en de vereisten waren heerlijk laag.

-VB6 runtime
-Windows 95 of hoger
-FTP server

Dus ja prima... Wait what, FTP Server? Jaja alle transacties gingen via losse bestanden. Het vb6 programma haalde een bestandje op van de server, gebruikte VB6 interne "plain text database" functies om dit uit te lezen. Downloade daarna nog een keer het zelfde losse bestandje (er kon immers ondertussen wat veranderd zijn) en committe de nieuwe data naar het bestandje en uploade dat weer. Zoals je ziet was er slechts een periode van +- 10seconden waarin er echt troep kon gebeuren.

Nouja werkte dus prima, ik blij, zij blij. Totdat ze me meer dan twee jaar later opbellen (inmiddels studeer ik dan net informatica en had ik echt ontzettend veel geleerd doordat ik ook fulltime aan het prog hobbyen was) dat het wat traag aan het worden is. Geen wonder, de FTP server staat wel in hun lokale netwerk, maar 2x een bestand van 15MB downloaden en het daarna weer uploaden per verandering maakt het soms wel even traag. (En door de prachtige relaties die ik had gemaakt moest je soms meer dan 1 bestand hebben).

Ik kwam daar binnen en achter elke computer die ik zag stond de database open. Ook hadden ze twee nieuwe vestigingen ge-opened die ook de database gebruikt. Er waren in totaal continue 20 mensen tegelijkertijd met de DB bezig. (En somehow ging het nogsteeds goed).

Het half jaar daarna heb ik mijn vrije tijd besteed aan een nette database geschreven in C# die netjes gebruik maakt van een MySQL datbase bij een externe hoster. Gevuld met good practices als parameterized queries e.d.

(Wel ben ik stiekem nogsteeds trots op mijn "VB6-ftp based relational database" :) )

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Een enorm slecht programmeervoorbeeld van vorig jaar hier is t volgende (heb er niet echt code voor nodig om te verduidelijken).

- Site met dynamische webshop in meerdere talen (voorlopig en/nl) waarbij elke string uit de database komt
- Voor elke string die opgehaald moest worden werd een functie aangeroepen String::getString(id);
- Caching, wat is dat?

Komt er dus op neer dat er per opgevraagde pagina een paar honderd queries gedaan werden. Dan kun je je voorstellen dat met n paar duizend bezoekers per dag best in de knoop komt met performance :+ Server lag er om de haverklap uit ook. Mn collega dacht een gouden idee te hebben door alle strings van de gekozen taal als array in iemands sessie te knallen. Dat kwam neer op 2MB per sessie (per user dus) en toen kreeg de server geheugenproblemen :+
Ik heb t uiteindelijk opgelost door fullpage caching in te bouwen (met Zend_Cache) maar dit is iets waar we erg van geleerd hebben...

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

MBV schreef op donderdag 02 april 2009 @ 23:40:
Jij hebt duidelijk die codebase niet gezien :X Alles werd via index.php doorgeschoten naar de 'back end'. Ik heb die caching als volgt opgelost:
Dat hoeft nog niet eens zo'n probleem te zijn. Invision Power Board doet dit ook, alles wordt via index.php aangeroepen. Dat maakt bijvoorbeeld modrewriten een stuk makkelijker, en je hoeft ook niet dezelfde code, al is het maar een include in meerdere pagina's te plempen.

Nu zijn zij niet altijd een even goed voorbeeld, want zij misbruiken classes bijvoorbeeld. Een pagina, zoals de 'post bericht' pagina is gewoon een class die aangeroepen wordt, deze doet zijn ding, en dan wordt via een soort GetHTML() aanroep de geparste HTML verkregen. Deze wordt dan verder verwerkt in andere templates. Zo ongeveer werkt 't:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class blaat {
    private $blaat;
    private $zoem;

    function __construct() {
      global $IN, $DB, // en nog wat variabelen

        // doe dingen
        // verwerk post data enz. parse templates
    }
    
    function GetHTML() {
        // return geparste template
        
    }
}
En dit werkt op zich prima. Het maakt het heel modulair, en je kan makkelijk modules erbij bouwen.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

roy-t schreef op vrijdag 03 april 2009 @ 08:33:
Om maar is even een slecht programmeer (hoewel, eerder S.D.) voorbeeld te geven van mezelf.
*snip*

(Wel ben ik stiekem nogsteeds trots op mijn "VB6-ftp based relational database" :) )
Prachtig verhaal :) Bewijs van de uitspraak "alle programma's beginnen klein" ...

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 13-09 21:30
roy-t schreef op vrijdag 03 april 2009 @ 08:33:
[..mooi verhaal]

(Wel ben ik stiekem nogsteeds trots op mijn "VB6-ftp based relational database" :) )
:D
Geweldig verhaal! Dat je het eerst maar voor 1 of 2 mensen moet maken, kom je een paar jaar later daar weer binnen wandelen, draait dat programmaatje gewoon op 20 computers die er tegelijkertijd mee bezig zijn!

Acties:
  • 0 Henk 'm!

  • Muscrerior
  • Registratie: September 2005
  • Laatst online: 09-07 14:59
MBV schreef op donderdag 02 april 2009 @ 23:40:
Jij hebt duidelijk die codebase niet gezien :X Alles werd via index.php doorgeschoten naar de 'back end'. [...]
Front-controller pattern? of zeg ik nou iets heel doms? :?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Alles vanuit index.php routen naar de juiste controller is helemaal niet raar. In je index.php zet je je bootstrap en roep je de juiste controller aan (of je laat dit automatisch doen). Ik zou wel van MBV willen weten wat hier slecht aan is want zo'n beetje elk framework is gebaseerd op dit concept.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Ik vind dat ook niet slecht, maar de 'front controller' deed zo ontzettend veel dingen waar hij zich niet mee moest bemoeien, dat het een onoverzichtelijke brei was geworden. En dat alles in 1 grote lap code zonder opdeling in functies o.i.d.
Daarnaast waren noodzakelijke initialisaties verspreid over een stuk of 4 bestanden van 10.000 regels per stuk ofzo. Als je dat alles moet doen voordat de caching plaats vindt, heeft de caching geen zin meer: in die initialisaties werd halverwege namelijk de pagina uit de database gehaald... :X

Nu ik mijn bericht teruglees zie ik inderdaad dat ik vergeten ben om uit te leggen waarom de code zo slecht was. Dat had o.a. te maken met de structuur van de code (3/4 stond in common.php, manier van met templates omgaan, html-structuur van de templates,...), en natuurlijk de caching waarbij iemand vergeten was om te kijken of het wel effect had. Vandaar dat ik die smerige hack in index.php heb gezet die alles zo ver mogelijk bij het begin stopzette.

[ Voor 22% gewijzigd door MBV op 03-04-2009 11:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Hèee, maar als ik het goed begrijp kan die Front-controller echt extreem groot worden?

Acties:
  • 0 Henk 'm!

Verwijderd

MBV schreef op vrijdag 03 april 2009 @ 11:28:
[...]

Ik vind dat ook niet slecht, maar de 'front controller' deed zo ontzettend veel dingen waar hij zich niet mee moest bemoeien, dat het een onoverzichtelijke brei was geworden.
Dat dus :P

Acties:
  • 0 Henk 'm!

Verwijderd

Een klassieker:

je hebt in je hoofd dat je de variabele $row wilt returnen. En in een gedachtenkronkel ga je je resultset dus ehhh... nou ja, kijk zelf maar:

PHP:
1
2
3
$result=mysql_fetch_array($resultset);
$row=$result;
return $row;


Dit is echt éen van mn slechtere :P

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Gebruik dan ook zinnige variabele namen in plaats van $row. :s

Gewoon lekker duidelijk (wel met een O/R mapper, mgoed):

C#:
1
2
3
4
5
6
7
DAL.BeerCollection dalBeers = new DAL.BeerCollection();
dalBeers.GetMulti(null);

foreach(DAL.BeerEntity dalBeer in dalBeers)
{
  dalBeer.SomeProperty = ....;
}

[ Voor 6% gewijzigd door Grijze Vos op 03-04-2009 15:33 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik mis het echte probleem? Bij 90% vd mysql_fetch_array() calls wereldwijd gaat de return value in een variabele genaamd $row. Of is de tussenvariabele het probleem? Dat zal me roesten, is een micro optimalisatie at best.

{signature}


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op vrijdag 03 april 2009 @ 15:02:
[...]


Hèee, maar als ik het goed begrijp kan die Front-controller echt extreem groot worden?
Dan begrijp je t niet goed dus :+

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Haan schreef op donderdag 02 april 2009 @ 08:31:
LaTeX ftw inderdaad! Al heb ik er ook soms ruzie mee, vooral als je een tabel moet maken die je in Word zo uit de grond stampt, maar in LaTeX kan dat een pain-in-the-*ss zijn :P
xl2latex?

Acties:
  • 0 Henk 'm!

Verwijderd

Voutloos schreef op vrijdag 03 april 2009 @ 15:44:
Ik mis het echte probleem? Bij 90% vd mysql_fetch_array() calls wereldwijd gaat de return value in een variabele genaamd $row. Of is de tussenvariabele het probleem? Dat zal me roesten, is een micro optimalisatie at best.
Kost je toch weer een paar clockcycles extra elke keer. En dat op een vrij drukke site...you do the math ;).

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Als daar de winst zit die je kan behalen zit de rest van je site verdraaid goed in elkaar :P

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op zaterdag 04 april 2009 @ 13:19:
[...]

Kost je toch weer een paar clockcycles extra elke keer. En dat op een vrij drukke site...you do the math ;).
Met een goede optimizer maakt het geen zak uit.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
PHP...

@hieronder: nee, de PHP compiler prikt bijna nergens doorheen. Daar heb ik eerder dingen voor uitgeprobeerd: geef hem in een loopje 100.000 keer een string-constante van erg lang, vergelijk dat met een korte string, en geef de output: 10x zo lang als een korte string-constante 8)7

[ Voor 95% gewijzigd door MBV op 04-04-2009 16:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op zaterdag 04 april 2009 @ 14:28:
[...]

Met een goede optimizer maakt het geen zak uit.
Hoewel mijn reactie niet helemaal serieus was vraag ik me wel af of de PHP compiler hier doorheen prikt?

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Voutloos schreef op vrijdag 03 april 2009 @ 15:44:
Ik mis het echte probleem? Bij 90% vd mysql_fetch_array() calls wereldwijd gaat de return value in een variabele genaamd $row. Of is de tussenvariabele het probleem? Dat zal me roesten, is een micro optimalisatie at best.
Zinnige naamgeving helpt bij het voorkomen van dit soort fouten wellicht? En het gebruik van een zinnige library (zelf geschreven of niet) zorgt er uberhaupt voor dat ie die code niet telkens opnieuw hoeft te schrijven.
Verwijderd schreef op zaterdag 04 april 2009 @ 16:07:
[...]
Hoewel mijn reactie niet helemaal serieus was vraag ik me wel af of de PHP compiler hier doorheen prikt?
Welke compiler?

[ Voor 18% gewijzigd door Grijze Vos op 04-04-2009 16:25 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Heeft PHP geen compiler dan? Wat in de .php files staat is toch geen uitvoerbare machinecode...dus er zal iets gecompileerd moeten worden :+

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Verwijderd schreef op zaterdag 04 april 2009 @ 16:50:
Heeft PHP geen compiler dan? Wat in de .php files staat is toch geen uitvoerbare machinecode...dus er zal iets gecompileerd moeten worden :+
PHP heeft een interpreter, dat is m.i. iets heel anders ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

En de bytecode compiler wordt voor het gemak maar even vergeten? Die bytecode wordt namelijk aan de Zend Engine gevoerd.

[ Voor 30% gewijzigd door AtleX op 04-04-2009 17:17 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Your point being...?
Verwijderd schreef op zaterdag 04 april 2009 @ 16:07:
[...]

Hoewel mijn reactie niet helemaal serieus was vraag ik me wel af of de PHP compiler hier doorheen prikt?
De vraag is, wat is de PHP compiler? Het staat iedereen vrij een eigen implementatie te maken, en daarom bestaan die ook, en tevens 3rd party optimizers.

Verder lijken een aantal heren hierboven me te denken dat iets alleen maar een compiler is als het machinecode output.

[ Voor 10% gewijzigd door .oisyn op 04-04-2009 18:15 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

AtleX schreef op zaterdag 04 april 2009 @ 17:17:
En de bytecode compiler wordt voor het gemak maar even vergeten? Die bytecode wordt namelijk aan de Zend Engine gevoerd.
Hoeveel mensen compileren nou een PHP script in plaats van deze gewoon direct te laten uitvoeren als plain text bestand?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sebazzz is idd een van die heren ;)
Sebazzz, het feit dat een stuk programmacode direct wordt uitgevoerd wil niet zeggen dat er geen interne compiler tussen zit die de code zelf transformeert naar een bytecode vorm oid, wat vervolgens eventueel wordt geoptimaliseerd en vervolgens wordt uitgevoerd.

[ Voor 86% gewijzigd door .oisyn op 04-04-2009 18:15 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Wat "de PHP compiler" is weet ik ook niet, maar laten we uitgaan van het standaard pakket wat je kan downloaden op php.net...is die in staat om de extra stap naar $row weg te optimaliseren?

Hoewel het wel een 'beetje' mierenneuken is, het zal 1 extra reference zijn... ;)

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
In de context van een mysql_fetch_array() call en zeker in begrip de tijd van de daaraan voorafgaande query, maakt die ene assignment relatief echt geen reet uit. Resteert enkel micro-optimalisatie en trivia. :P

{signature}


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 03:41

Patriot

Fulltime #whatpulsert

Je moet het stukje code ook niet weghalen omdat het sneller zou zijn, maar omdat het je code onoverzichtelijk kan maken.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 21:14
Van een master-student informatica verwacht ik toch echt dat je weet wat een compiler is :+

Heb jij een betere definitie dan deze:
A compiler is a computer program (or set of programs) that transforms source code written in a computer language (the source language) into another computer language (the target language, often having a binary form known as object code
Ja, ik zie de flags dat een expert ernaar moet kijken, en als dat echt een probleem is, vraag ik het woensdag aan Mark ;)
Dat we er hier al eerder achter zijn gekomen dat de Zend compiler/interpreter zuigt :?
De vraag is, wat is de PHP compiler? Het staat iedereen vrij een eigen implementatie te maken, en daarom bestaan die ook, en tevens 3rd party optimizers.
de PHP compiler is dat ding wat je van Zend.com gratis kan downloaden, dat lijkt me duidelijk. Dat is immers degene die het meeste wordt gebruikt, het ding wat je o.a. meekrijgt als je XAMP installeert, het ding wat je krijgt als je apt-get install apache-php intikt in Debian.
Net zoals de C# compiler de meest-gebruikte, standaard meegeleverde compiler is: dat ding van MS.

offtopic:
Net zoals de TomTom het ding is wat TomTom maakt, en niet die van Medion :+

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Wel grappig dat iedere keer dit topic uitmondt in een discussie over/voor/tegen/aan PHP. Wat zou er toch zo speciaal zijn? (niet op ingaan, deze post moet niet de startpost worden van een nieuw afgesplitst topic :+ )

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1 ... 9 ... 103 Laatste

Dit topic is gesloten.

Let op:
Uiteraard is het in dit topic niet de bedoeling dat andere users en/of topics aangehaald worden om ze voor gek te zetten. Lachen om je eigen code, of over dingen die je "wel eens tegengekomen bent" is prima, maar hou het onderling netjes. :)