[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 ... 17 ... 103 Laatste
Acties:
  • 993.666 views

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Een wijze keuze imo :)

Acties:
  • 0 Henk 'm!

  • StM
  • Registratie: Februari 2005
  • Nu online

StM

Cartman! schreef op maandag 09 november 2009 @ 10:09:
Het gebruik van smarty begrijp ik ook niet helemaal, in feite doe je precies hetzelfde als 'normaal' alleen dan met een andere syntax die ervoor zorgt dat je nog een extra vertaalslag nodig hebt (=slomer).
Mwua dat valt wel mee. Smarty 'compiled' je tpl naar php. In productie zet je de controle of de tpl gewijzigd is uit en dan is je enigste overhead nog de tussenliggende array waar smarty intern alles in opslaat. Ik betwijfel of dit een meetbare overhead oplevert omdat ook in html tpl's je ergens je ruwe data moet laten voor je view.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Maar waarom zou je uberhaupt een dergelijke engine gebruiken? Je moet er alleen nog weer een extra syntax voor leren terwijl het je eigenlijk niet echt voordelen oplevert naar mijn idee. Ik ben dus benieuwd wat je grote voordeel van smarty is dus.

Acties:
  • 0 Henk 'm!

Verwijderd

Naast de scheiding van markup en logica (wat imo zoizo veel overzichtelijker is), zitten er ook sterke server-side caching functionaliteiten in. Ik heb smarty nog maar een paar keer gebruikt, maar ik vond het erg prettig werken.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik werk volgens het MVC-principe dus dat argument houdt geen stand dan, logica in views is erg...logisch. En caching handelt een los cache-object af, dat laat ik niet aan de view zelf over :?

offtopic:
je bedoelde vast sowieso trouwens ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op maandag 09 november 2009 @ 11:57:
Naast de scheiding van markup en logica (wat imo zoizo veel overzichtelijker is)
.oisyn schreef op maandag 09 november 2009 @ 00:54:
Ah, je bent er zoéén die het principe van scheiding van business layer en presentation layer onjuist interpreteert als zijnde dat de presentatielaag geen code mag bevatten?

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!

  • StM
  • Registratie: Februari 2005
  • Nu online

StM

Heel knap als je een view kan maken zonder ook maar enige logica :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Het 'rare' aan de 'logica' dat je view geen code mag bevatten is dat je vervolgens de logica er wel in gaat hangen maar dan volgens een andere syntax wat in feite op t zelfde neerkomt.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
Inderdaad.
Smarty:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html>
<head>
   <title>{$title_text|escape}</title>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
 
<body> {* This is a little comment that won't be visible in the HTML source *}
 
{$body_html}
 
</body><!-- this is a little comment that will be seen in the HTML source -->
</html>

gejat van Wikipedia.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$title_text = escape($title_text); //natte-vinger, nooit met smarty gewerkt
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html>
<head>
   <title><?=$title_text ?></title>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
 
<body>
 
<?php $body_html ?>
 
</body><!-- this is a little comment that will be seen in the HTML source -->
</html>

zoals ik het zou doen. Wat is het grote voordeel? PHP ís een template-engine...Nog leuker is het wanneer je die JSTL-achtige syntax van Joomla gaat gebruiken 8)7

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:01

Janoz

Moderator Devschuur®

!litemod

Mwah, ik zou twee dingen toch nog wel even aanpassen.

1: De escape gewoon op de plek zelf neerzetten. Dat maakt het een stuk duidelijker en je introduceert niet onnodige variabelen. Gewoon <?=escape($title) ?>

2: Geen html in je variabelen gaan zetten. Het vullen van $body_html betekent dat je buiten je view blijkbaar ook nog html code aan het bouwen bent.

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!

  • Tiemez
  • Registratie: December 2003
  • Laatst online: 24-10-2022
Janoz schreef op maandag 09 november 2009 @ 14:09:
Mwah, ik zou twee dingen toch nog wel even aanpassen.

1: De escape gewoon op de plek zelf neerzetten. Dat maakt het een stuk duidelijker en je introduceert niet onnodige variabelen. Gewoon <?=escape($title) ?>

2: Geen html in je variabelen gaan zetten. Het vullen van $body_html betekent dat je buiten je view blijkbaar ook nog html code aan het bouwen bent.
Er kan natuurlijk best html in $body_html staan, denk aan content uit een database waarbij gebruik gemaakt is van een editor als FCK ;)

Acties:
  • 0 Henk 'm!

  • acemoo
  • Registratie: Maart 2006
  • Laatst online: 14:13
Janoz schreef op woensdag 30 september 2009 @ 13:31:
Zoals een meetwaarde geen integer is, een getal geen datum is, een datum geen tekst is en een tekst geen array van bytes is, is geld geen floating point. Het is niet het type dat bij de grootheid hoort vanwege de eigenschappen.


Een meetwaarde (afstand, temperatuur, hoeveelheid neerslag) is bijvoorbeeld een floating point hoeveelheid (Wanneer er een mililiter water verdampt is dat bij honderd liter water compleet niet relevant, maar bij 2 mililiter heeft het een behoorlijke impact). Kern van de floating point is dat het een heel groot bereik heeft, maar daarbij concessies doet op significantie. Gelukkig is dat binnen de natuurkunde een bekend begrip en kan daar keurig mee gewerkt worden.

Bij een geldbedrag daarintegen is het wel degelijk van belang dat een mutatie van een cent altijd het saldo van een rekening aanpast, ook al loopt het saldo tot over de triljarden. Een geldbedrag is daarom dan ook een perfect voorbeeld van een fixedpoint getal.
Bedankt voor deze informatie, Ik ben 3e jaars student op HBO Informatica en dit soort dingen is ons nu nogsteeds nooit geleerd.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Janoz schreef op maandag 09 november 2009 @ 14:09:
2: Geen html in je variabelen gaan zetten. Het vullen van $body_html betekent dat je buiten je view blijkbaar ook nog html code aan het bouwen bent.
Tenzij je daarvoor ook views gebruikt. Ik gebruik een layout, te zien als een view:
PHP:
1
2
3
4
5
6
7
8
<html>
  <body>
    <div id="container">
      <div id="header"><?= $this->partial('header.phtml')?></div>
      <div id="content"><?= $this->content?></div>
    </div>
  </body>
</html>
Ergens in je flow koppel je dan je controller aan een view die (een deel van) je content rendert (idee komt uit het ZF btw).
PHP:
1
2
<h1><?= $this->article->getTitle()?></h1>
<p><?= $this->article->getIntro()?></p>

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:01

Janoz

Moderator Devschuur®

!litemod

Tiemez schreef op maandag 09 november 2009 @ 14:14:
[...]


Er kan natuurlijk best html in $body_html staan, denk aan content uit een database waarbij gebruik gemaakt is van een editor als FCK ;)
Het kan, maar het is wel het uitzonderlijke geval. Normaliter houdt de scheiding van view en logica ook in dat je in je logica geen rekening hoeft te houden met het medium waarop je output. Dat is dan gelijk ook weer precies de reden waarom de escape wel in het template thuishoort. Die zorgt er voor dat je tekst context afhankelijk omgezet kan worden in de view.
mithras schreef op maandag 09 november 2009 @ 14:18:
Tenzij je daarvoor ook views gebruikt. Ik gebruik een layout, te zien als een view:
PHP:
1
2
3
4
5
6
7
8
<html>
  <body>
    <div id="container">
      <div id="header"><?= $this->partial('header.phtml')?></div>
      <div id="content"><?= $this->content?></div>
    </div>
  </body>
</html>
Ergens in je flow koppel je dan je controller aan een view die (een deel van) je content rendert (idee komt uit het ZF btw).
PHP:
1
2
<h1><?= $this->article->getTitle()?></h1>
<p><?= $this->article->getIntro()?></p>
Klopt. Maar dan zou body_html geen variabele zijn die je uit je business laag krijgt en die indruk werd wel een beetje gewekt (of laat ik het beter zeggen: dat de body variabele een enkel binnen de view context bekend stukje data is, is niet echt uit het voorbeeld te halen)

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: 14:32
Janoz schreef op maandag 09 november 2009 @ 14:09:
Mwah, ik zou twee dingen toch nog wel even aanpassen.

1: De escape gewoon op de plek zelf neerzetten. Dat maakt het een stuk duidelijker en je introduceert niet onnodige variabelen. Gewoon <?=escape($title) ?>

2: Geen html in je variabelen gaan zetten. Het vullen van $body_html betekent dat je buiten je view blijkbaar ook nog html code aan het bouwen bent.
1: in sommige gevallen mee eens. Vaak doe ik iets complexere presentatie-berekeningen/bewerkingen zoals ik het daar laat zien: bovenin. Onderin komt dan alleen maar de echo en de for-loop.
2: zoals gezegd: voorbeeld gejat van wikipedia :) Wat daar nog eens bijkomt: ik zal meestal de header en footer includen uit een template.
br men schreef op maandag 09 november 2009 @ 14:16:
[...]


Bedankt voor deze informatie, Ik ben 3e jaars student op HBO Informatica en dit soort dingen is ons nu nogsteeds nooit geleerd.
Hogeschool Rotterdam ofzo? :X Op de TH Rijswijk is het correct gebruik van types toch echt wel meerdere keren aan bod geweest.
Janoz schreef op maandag 09 november 2009 @ 14:37:
[...]

Klopt. Maar dan zou body_html geen variabele zijn die je uit je business laag krijgt en die indruk werd wel een beetje gewekt (of laat ik het beter zeggen: dat de body variabele een enkel binnen de view context bekend stukje data is, is niet echt uit het voorbeeld te halen)
Sorry, dat is het nadeel van kleine voorbeeldjes. Maar dat is toch net zo erg bij de smarty-code als bij de php-code? Het ging mij om het (gebrek aan) verschil tussen de 2 talen :)
En het zou natuurlijk een template header/footer kunnen zijn, waar een ander template de body_html vult O-)

Acties:
  • 0 Henk 'm!

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

MBV schreef op maandag 09 november 2009 @ 15:05:
[...]
Hogeschool Rotterdam ofzo? :X Op de TH Rijswijk is het correct gebruik van types toch echt wel meerdere keren aan bod geweest.
[...]
Zelf studeer ik ook op de HRO. Weliswaar zit ik bij Technische Informatica, waar wel iets andere docenten lopen, maar ik heb toch wel echt duidelijk te horen gekregen hoe je correct types moet gebruiken hoor. Ik weet niet meer wanneer, maar het zal maximaal de tweede les geweest zijn :| .

Om het ontopic te houden:

Hier de code die ik van een klasgenoot kreeg (lees: pseudocode)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Klas {
  private boolean running;
  public Klas() {
    running = true;
    //Doe een hoop initialisaties
    while(running) {
    //voer de logica van de code uit. 
    }
  }

  public void stopMethode() {
    running = false;
  }
}

Waarom werkt dit nou niet zoals het bedoeld is :p

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

icyx schreef op maandag 09 november 2009 @ 19:56:

Hier de code die ik van een klasgenoot kreeg (lees: pseudocode)

Waarom werkt dit nou niet zoals het bedoeld is :p
Zo doe ik dat ook vaak. Wat is daar dan fout aan? Ik zet er voor de zekerheid nog wel een een mutex omheen, maar in principe hoeft dat niet vziw.

[ Voor 14% gewijzigd door Zoijar op 09-11-2009 20:02 ]


Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 10:36
Misschien omdat de while in de constructor staat?

edit: lijkt me overigens wel dat dit dan is om iets van threading te regelen

[ Voor 44% gewijzigd door Daspeed op 09-11-2009 20:06 . Reden: toevoeging ]


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Oh, daar keek ik overheen :) In veel talen is het idd geen goed idee om met partially constructed objects te gaan werken...

[ Voor 62% gewijzigd door Zoijar op 09-11-2009 20:09 ]


Acties:
  • 0 Henk 'm!

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

Het is inderdaad omdat het in een constructor staat. Laat ik de boel iets meer uitleggen.
Dit object bevatte best wel wat code, en moest het een en ander aansturen + uitlezen van een stukje randhardware. Deze code moest dan weer bepaalde data hiervan doorgeven aan andere objecten, en moest zelf ook dingen 'ontvangen'. Omdat het object nooit helemaal 'gemaakt' word, is het doorgeven van pointers enzo ook een beetje lastig. Hij kreeg dus allemaal null pointer exceptions enzo. Goed, dit zijn een beetje de hoofdlijnen van de achtergrond :p

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.


Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 09-10 01:21

Nick_S

++?????++ Out of Cheese Error

Ook zou ik je running variabele maar synchronizen of transient maken, anders gaat het JMM het je nogal lastig maken. ;)

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

Nick_S schreef op maandag 09 november 2009 @ 20:49:
Ook zou ik je running variabele maar synchronizen of transient maken, anders gaat het JMM het je nogal lastig maken. ;)
Ach, als het allemaal maar 1 thread betreft boeit dat allemaal niet zo veel. In principe word die boolean alleen veranderd als het programma afsluit -> dan gaat de JVM sowieso dood, dus haalt het weinig uit mocht het fout gaan (wat al haast niet kan in zijn situatie).

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 13:09

orf

Toch nog even terugkomen op Smarty. :)

Een voorbeeldje van het printen van een resultset in een table met een variabel aantal kolommen.
Waarbij je in de view iets anders wilt laten zien als de resultset leeg is (je kunt erover discussieren of dit in de business logic moet). En de laatste kolom moet een class="last" krijgen om met CSS iets te kunnen doen.

PHP: template.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table>                                                       
    <? if (count($resultset) > 0): ?>
        <? foreach($resultset as $row): ?>
            <tr>
                <? foreach($row as $key => $column): ?>
                    <td<? if($key == $this->lastArrayKey($row)): ?> class="last"<? endif ?>>
                        <?= htmlspecialchars($column) ?>
                    </td>
                <? endforeach ?>
            </tr>
        <? endforeach ?>  
    <? else: ?>
        <tr>
            <td>Geen resultaten</td>    
        </tr>
    <? endif ?>          
</table>

Smarty: template.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<table>
    {foreach from=$resultset item=row}
        <tr>
            {foreach from=$row item=column name=td}
                <td{if $smarty.foreach.td.last} class="last"{/if}>
                    {$column|htmlspecialchars}
                </td>
            {/foreach}
        </tr>
    {foreachelse}
        <tr>
            <td>Geen resultaten</td>
        </tr>
    {/foreach}
</table>
Jammer van de highlighting, in je editor of IDE heb je natuurlijk wel highlighting.

De Smarty code vind ik er netter uitzien. Zeker de if om de class="last" toe te kunnen voegen is in Smarty beter leesbaar dan de PHP template.

Daarnaast kun je met Smarty front-enders templates laten bouwen, zonder dat de front-ender iets in PHP kan doen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:01

Janoz

Moderator Devschuur®

!litemod

orf schreef op maandag 09 november 2009 @ 21:52:
Waarbij je in de view iets anders wilt laten zien als de resultset leeg is (je kunt erover discussieren of dit in de business logic moet).
Valt imho niet over te discussiëren. Businesslogic levert een lijst op. Het is vervolgens aan de view hoe hij daarin het verschil aangeeft of de controller die een andere view aanwijst.

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!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 13:09

orf

Janoz schreef op maandag 09 november 2009 @ 22:14:
[...]

Valt imho niet over te discussiëren. Businesslogic levert een lijst op. Het is vervolgens aan de view hoe hij daarin het verschil aangeeft of de controller die een andere view aanwijst.
Maar dat was nou juist niet mijn punt. ;) In de PHP 'template' wordt dat in het voorbeeldje hetzelfde opgelost als in de Smarty template.

Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
icyx schreef op maandag 09 november 2009 @ 19:56:
[...]


Waarom werkt dit nou niet zoals het bedoeld is :p
Vergeten in een aparte thread te starten :P

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het punt is meer dat de 'buitenwereld' nooit de thread kan stoppen, want hij heeft geen object om mee te praten (of wel als je mazzel hebt en de VM de referentie naar het object al in de variabele heeft opgeslagen voordat hij de ctor aanroept ;))

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!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
Moet misschien nog wel te doen zijn door de this pointer ergens buiten de class op te slaan.

[ Voor 6% gewijzigd door bobo1on1 op 09-11-2009 23:25 ]

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja, natuurlijk, maar het is ook te doen door de code niet in de ctor te runnen. Het ging uiteraard om de code zoals ie er stond, en niet nadat er allemaal aanpassingen aan gemaakt zijn :)

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!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 13:51

Patriot

Fulltime #whatpulsert

orf schreef op maandag 09 november 2009 @ 21:52:
De Smarty code vind ik er netter uitzien. Zeker de if om de class="last" toe te kunnen voegen is in Smarty beter leesbaar dan de PHP template.

Daarnaast kun je met Smarty front-enders templates laten bouwen, zonder dat de front-ender iets in PHP kan doen.
Mja, blijft een nogal subjectieve kwestie zo. De enige reden dat je het nu gebruikt omdat je dat er leuker uit vind zien? Dat is niet echt een goede reden om het te gebruiken, vind ik.

Ik heb in het verleden ook Smarty gebruikt, maar dat had meer te maken met het feit dat ik op dat moment een bepaalde structuur miste als het ging om 'views' (er was niet echt sprake van views omdat ik niet volgens het MVC-principe werkte). Tegenwoordig is die structuur er wel en is Smarty in zekere zin overbodig (de caching van Smarty gebruikte ik sowieso niet), voor mij. Als je een IDE hebt met goede code highlighting kan het vast iets duidelijker zijn in bepaalde situaties, maar dat is in mijn ogen een minimaal verschil. Het PHP-alternatief is in ieder geval niet onduidelijk.

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 13:09

orf

De enige reden dat je het nu gebruikt omdat je dat er leuker uit vind zien? Dat is niet echt een goede reden om het te gebruiken, vind ik.
Dat is niet de reden en dat zie je in mijn stukje ook niet staan. Ik zeg dat het beter leesbaar is. Dat vind ik namelijk wel een goed argument.

Ik gebruikte Smarty vroeger ook als template engine zonder MVC. Al weer geruime tijd maken wij als bedrijf gebruik van Zend Framework mét Smarty. Smarty wordt gebruikt voor de view. Ook wij gebruiken geen caching binnen Smarty.

Je kunt het als onderdeel van je coding standards / conventies zien om wel of niet Smarty te gebruiken. Ik word alleen soms een beetje moe van het Smarty bashen.

Acties:
  • 0 Henk 'm!

  • NLxAROSA
  • Registratie: December 2005
  • Niet online
.oisyn schreef op maandag 09 november 2009 @ 00:54:
Ah, je bent er zoéén die het principe van scheiding van business layer en presentation layer onjuist interpreteert als zijnde dat de presentatielaag geen code mag bevatten?
Je kunt dit ook iets nuanceren. Je kunt, naast de splitsing tussen business en presentatie, de presentatielaag weer verder opsplitsen, waarbij je een scheiding aanbrengt tussen het gedrag en het gezicht van de presentatielaag. Dit zou je bijvoorbeeld kunnen doen met Apache Wicket; hiermee kun je het gezicht van je presentatielaag onderbrengen in (X)HTML en het gedrag in Java.

Op die manier kun je een scheiding aanbrengen tussen markup en presentatie-logica (binnen je presentatielaag). Dit is met name in grote projecten een voordeel, waar bepaalde rollen gescheiden zijn.

Bovenstaande constructie heeft uiteraard, zoals je al aangeeft, helemaal niets te maken met de scheiding tussen business en presentatie. Maar het één sluit het ander niet uit.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 15:42
NLxAROSA schreef op dinsdag 10 november 2009 @ 08:41:
[...]


Je kunt dit ook iets nuanceren. Je kunt, naast de splitsing tussen business en presentatie, de presentatielaag weer verder opsplitsen, waarbij je een scheiding aanbrengt tussen het gedrag en het gezicht van de presentatielaag. Dit zou je bijvoorbeeld kunnen doen met Apache Wicket; hiermee kun je het gezicht van je presentatielaag onderbrengen in (X)HTML en het gedrag in Java.

Op die manier kun je een scheiding aanbrengen tussen markup en presentatie-logica (binnen je presentatielaag). Dit is met name in grote projecten een voordeel, waar bepaalde rollen gescheiden zijn.

Bovenstaande constructie heeft uiteraard, zoals je al aangeeft, helemaal niets te maken met de scheiding tussen business en presentatie. Maar het één sluit het ander niet uit.
Maak je het hieerdoor niet extra extra moeilijk?

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • NLxAROSA
  • Registratie: December 2005
  • Niet online
Webgnome schreef op dinsdag 10 november 2009 @ 08:59:
[...]


Maak je het hieerdoor niet extra extra moeilijk?
Ligt eraan wat je aan het realiseren bent, maar met name in grote projecten met complexe user interfaces levert dit juist een voordeel op, bijvoorbeeld doordat interactie ontwerpers zich bezig kunnen houden met hoe e.e.a. eruitziet terwijl programmeurs zich bezig kunnen houden met het gedrag. Door de zuivere scheiding kunnen ze dat onafhankelijk van elkaar doen en is integratie van beide disciplines erg eenvoudig. Met name bij grotere projecten zijn de disciplines programmeren en interactie ontwerp gescheiden (en vaak ook om goede redenen).

Voor kleinere, simpele projecten is die noodzaak er uiteraard minder (en kan het soms beter zijn dit juist helemaal niet te doen). Maar het voorbeeld was meer bedoeld om aan te geven dat het één het ander niet per definitie uitsluit. Je kunt best de code van je markup scheiden binnen je presentatielaag zonder dit te verwarren met de scheiding tussen presentatie en business lagen. Of dit voor jouw project nuttig en/of handig is, moet je uiteraard zelf bepalen. :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

NLxAROSA schreef op dinsdag 10 november 2009 @ 08:41:
Je kunt dit ook iets nuanceren. Je kunt, naast de splitsing tussen business en presentatie, de presentatielaag weer verder opsplitsen, waarbij je een scheiding aanbrengt tussen het gedrag en het gezicht van de presentatielaag.
Dat is niet het punt. Als je een tabelletje wil genereren dan zul je een loop structuur moeten gebruiken. Of je daar nou een speciale syntax voor gebruikt die je template systeem kent of gewoon wat PHP code, het blijft logica in de presentatielaag, waarvan het bovendien geheel logisch is dat het daar staat.

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: 14:32
Ik geloof dat we weer eens met z'n allen langs elkaar heen aan het praten zijn :) Ik kan me best voorstellen dat smarty met loops etc betere mogelijkheden biedt dan PHP alleen, en als het toch al vertaald wordt naar PHP, maakt het geen bal uit. Ik vind het voorlopig niet de moeite waard om nóg een taal te leren.

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 12:14
MBV schreef op dinsdag 10 november 2009 @ 11:30:
Ik geloof dat we weer eens met z'n allen langs elkaar heen aan het praten zijn :) Ik kan me best voorstellen dat smarty met loops etc betere mogelijkheden biedt dan PHP alleen, en als het toch al vertaald wordt naar PHP, maakt het geen bal uit. Ik vind het voorlopig niet de moeite waard om nóg een taal te leren.
Het wordt dan natuurlijk allemaal naar HTML vertaald, en je zou kunnen vinden dat het geen bal uit maakt. Maar door alles (qua UI logica) in Smarty te doen heb je meteen een perfecte scheiding. Tussen View en de rest.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
MBV schreef op dinsdag 10 november 2009 @ 11:30:
Ik geloof dat we weer eens met z'n allen langs elkaar heen aan het praten zijn :) Ik kan me best voorstellen dat smarty met loops etc betere mogelijkheden biedt dan PHP alleen, en als het toch al vertaald wordt naar PHP, maakt het geen bal uit. Ik vind het voorlopig niet de moeite waard om nóg een taal te leren.
En als je een beetje slim bent zorg je dat je allerlei functies maakt die je in je view kan gebruiken. Voorbeeldje:
PHP:
1
2
3
4
5
6
7
8
9
10
<table>
  <? foreach ($this->list as $item):?>
    <? $class = $this->cycle(array('odd', 'even'))->next()?>
    <? $class .= ($this->isLast($item, $this->list)) ? ' last' : null;
    <tr class="<?= $class?>">
      <td><?= $item->name?></td>
      <td><?= $item->date?></td>
    </tr>
  <? endforeach;?>
</table>
Zo moeilijk is het niet en alle functionaliteiten van Smarty kan je prima zelf implementeren (met een zeer kleine moeite). Het enige verschil is het chainen van smarty vs het groeperen van php ("$var|func1|func2" vs "func2(func1($var))" ).

Imho dus een beetje overrated om een tool te gebruiken die je prima kan missen als je een juist framework gebruikt. Ik kies liever voor een goed framework zonder extra tools dan een minder goed framework en (de noodzaak om) externe tools (zoals smarty) te gebruiken :)

/edit: de andere kant is dan ook wel waar: als je geen framework of toolkit oid gebruikt, kan je natuurlijk wel wat losse dingetjes inzetten om je werk te kunnen doen. Maar echt handig lijkt me dat niet :)

[ Voor 7% gewijzigd door mithras op 10-11-2009 11:56 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Voor dingen als func2(func1($var)) kun je eventueel ook gewoon een view helper maken natuurlijk :) Een extra laag die iedereen moet leren om precies hetzelfde te bereiken wat je "native" even snel kunt schrijven begrijp ik nog steeds niet met de argumenten die genoemd zijn.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
!null schreef op dinsdag 10 november 2009 @ 11:39:
[...]


Het wordt dan natuurlijk allemaal naar HTML vertaald, en je zou kunnen vinden dat het geen bal uit maakt. Maar door alles (qua UI logica) in Smarty te doen heb je meteen een perfecte scheiding. Tussen View en de rest.
En dát klopt dan weer niet: je kan niet alles (handig) in smarty doen, je zal vaak een PHP-functie nodig hebben ergens voor. Die hoort óók in je View, maar niet in Smarty. Je smarty-template is dus onderdeel van de View, niet de hele View.
mithras schreef op dinsdag 10 november 2009 @ 11:46:
[...]
En als je een beetje slim bent zorg je dat je allerlei functies maakt die je in je view kan gebruiken. Voorbeeldje:
[knip]
Zo moeilijk is het niet en alle functionaliteiten van Smarty kan je prima zelf implementeren (met een zeer kleine moeite). Het enige verschil is het chainen van smarty vs het groeperen van php ("$var|func1|func2" vs "func2(func1($var))" ).
Maar waarom zou ik het wiel opnieuw willen uitvinden?
Imho dus een beetje overrated om een tool te gebruiken die je prima kan missen als je een juist framework gebruikt. Ik kies liever voor een goed framework zonder extra tools dan een minder goed framework en (de noodzaak om) externe tools (zoals smarty) te gebruiken :)
Dan kies jij lekker voor .NET, dan doe je alles zoals ome Bill het wil. Ik kies liever voor een systeem als Java, waar je zelf kan kiezen wat je doet.

Het voordeel voor Smarty in PHP is dat je een taal afspreekt voor je templates. Als een designer weet hoe Smarty werkt, kan hij dat bij elk bedrijf gebruiken dat Smarty gebruikt.
/edit: de andere kant is dan ook wel waar: als je geen framework of toolkit oid gebruikt, kan je natuurlijk wel wat losse dingetjes inzetten om je werk te kunnen doen. Maar echt handig lijkt me dat niet :)
Hangt af van de schaal. Je hebt altijd een learning curve: je moet eerst leren met de tool te werken. Als ik mijn eigen website in elkaar zet, in 2 weken tijd, zal ik geen smarty willen leren: dat duurt een halve week en levert een dag op o.i.d. (Smarty is misschien een slecht voorbeeld wat dat betreft, meer van toepassing op O/R-mappers etc).
Cartman! schreef op dinsdag 10 november 2009 @ 12:03:
Voor dingen als func2(func1($var)) kun je eventueel ook gewoon een view helper maken natuurlijk :) Een extra laag die iedereen moet leren om precies hetzelfde te bereiken wat je "native" even snel kunt schrijven begrijp ik nog steeds niet met de argumenten die genoemd zijn.
Wat is het grootste nut van design patterns? Dat zijn dingen die iedereen zodra hij ze nodig heeft, vanzelf op bijna dezelfde manier implementeert. Heeft toch geen nut om die dingen vast te leggen? ;)

spoiler:
Je creëert een vocabulaire waarbij iedereen weet waar je het over hebt, zelfde geldt voor smarty.


Afbeeldingslocatie: http://t0.gstatic.com/images?q=tbn:hUjshfot9y5lzM:http://krispycanadian.files.wordpress.com/2008/11/smarties.jpgAfbeeldingslocatie: http://t0.gstatic.com/images?q=tbn:hUjshfot9y5lzM:http://krispycanadian.files.wordpress.com/2008/11/smarties.jpgAfbeeldingslocatie: http://t0.gstatic.com/images?q=tbn:hUjshfot9y5lzM:http://krispycanadian.files.wordpress.com/2008/11/smarties.jpgAfbeeldingslocatie: http://t0.gstatic.com/images?q=tbn:hUjshfot9y5lzM:http://krispycanadian.files.wordpress.com/2008/11/smarties.jpgAfbeeldingslocatie: http://t0.gstatic.com/images?q=tbn:hUjshfot9y5lzM:http://krispycanadian.files.wordpress.com/2008/11/smarties.jpg

Slechte programmeervoorbeelden graag :P

[ Voor 5% gewijzigd door MBV op 10-11-2009 12:15 ]


  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Arghpfffwtf.

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    -- meer zooi
    SUBSTRING(leagueidandname, 0, CHARINDEX('___', leagueidandname)) AS leaguename, 
    SUBSTRING(leagueidandname, CHARINDEX('___', leagueidandname) + 3, len(leagueidandname)) AS leagueid

FROM
    dattum

-- stuk of wat joins

LEFT JOIN (
    SELECT
        RTRIM(league.name) + '___' + CONVERT(varchar, seasonleague.id) AS leagueidandname,
    FROM dittum AS leagueplayerhistory
    -- 9 joins

  ) leaguename
    ON leaguename.leagueplayerhistoryid = playerhistory.id
-- de rest


Summary: selecteer iets dat als resultaat leaguename___1337 teruggeeft, en extract daar de league name en het ID weer uit dmv substring operaties.

Ik noem mezelf verre van bekend met SQL, maar dit?

  • _Apache_
  • Registratie: Juni 2007
  • Laatst online: 15:32

_Apache_

For life.

Vandaag werd een applicatie afgestoft die onbekend was. Lag in het management gevoelig om hem zomaar uit te zetten.

Moest opeens geupdate worden, paniek paniek.

Ik noem op :
- Classic ASP, in een omgeving die al jaren geleden gemigreerd is naar .Net2.0 later met 3.5 erbij.
- Procedureeel geprogrammeerd.
- Accountnaam = 'admin'
- Password = 'password'
- Geen limit op SQL queries
- Select met wildcards gebruiken.
- Gebruik van een ACCESS Database, waarvan we op elke machine in het cluster een lokale db hebben staan. Thank god dat het alleen lezen is uit de database.
- Complete lappen tekst inclusief HTML tags in de database.
- Een verbinding verbreken en 3 regels later weer aanmaken.
- Geen escaping

Moet ik doorgaan? :X

* _Apache_ gaat als beheerder huilend in een hoekje zitten.

Zero SR/S 17.3kWh / 2.7 kWP PV / Xtend WP 5kW + HRSolar zonnoeboiler


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 09-10 20:04

Sebazzz

3dp

Dit hoeft natuurlijk niet per definitie een slecht iets te zijn. Je kan prima hele mooie procedurele code kloppen waar een prima applicatie uitkomt. Zie de linux kernel bijvoorbeeld.

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


Verwijderd

_Apache_ schreef op donderdag 12 november 2009 @ 16:52:
- Classic ASP, in een omgeving die al jaren geleden gemigreerd is naar .Net2.0 later met 3.5 erbij.
- Procedureeel geprogrammeerd.
- Geen limit op SQL queries
- Select met wildcards gebruiken.
- Gebruik van een ACCESS Database, waarvan we op elke machine in het cluster een lokale db hebben staan. Thank god dat het alleen lezen is uit de database.
- Complete lappen tekst inclusief HTML tags in de database.
- Een verbinding verbreken en 3 regels later weer aanmaken.
En wat is hier slecht aan volgens jou?

  • _Apache_
  • Registratie: Juni 2007
  • Laatst online: 15:32

_Apache_

For life.

Sebazzz schreef op donderdag 12 november 2009 @ 17:32:
[...]

Dit hoeft natuurlijk niet per definitie een slecht iets te zijn. Je kan prima hele mooie procedurele code kloppen waar een prima applicatie uitkomt. Zie de linux kernel bijvoorbeeld.
Klopt. Het is niet per definitie fout, maar kan zeker beter.

Dat begrijp ik, maar maakt het er niet overzichtelijker van. Daarnaast kan je heel veel mooie dingen met bescherming van objecten, overervering en abstractie doen. Waardoor je niet iet elke keer het wiel hoeft te vinden.

OO > Procedureel

_
Verwijderd schreef op donderdag 12 november 2009 @ 18:44:
[...]
En wat is hier slecht aan volgens jou?
Serieus? Wel eens oude website beheerd? Enig idee waar je tijd in gaat zitten. Liever gebruik ik technologieën die meer standaard brengen, die bijvoorbeeld configuratiegrootheden centraal neerzet volgens afgesproken waarden ( web.config's ).

Lokale databases zijn echt een NO-GO. Naast het feit dat je geen database op je webserver wil, moet je naar een centrale database. Gegevens op één plek willen bijwerken.

Om de eerste paar puntjes aan te stippen. Classic ASP is behoorlijk resources intensief, als je op een omgeving 20 websites hebben staan, zie je direct dat de .Net applicaties aanzienlijk vriendelijke met de processortijd en het geheugen omgaan.

De limits op queries. De gegevenstroom in applicaties groeien elke dag, elke keer meer gegevens ophalen dan wat je verwerkt in je pagina of bij een verzameling gegeven gebruikt maar onnodig veel resources. Het zal niet de eerste keer zijn dat applicaties tot stilstand komen omdat de database het niet meer trekt. Pak alleen exact wat je nodig hebt is het streven imho. Daarnaast, waarom zou je een verbinding sluiten als je hem een paar regels later weer moet gebruiken?

Zero SR/S 17.3kWh / 2.7 kWP PV / Xtend WP 5kW + HRSolar zonnoeboiler


Verwijderd

De motivatie die je geeft zegt enkel iets over wanneer een bepaalde aanpak niet wenselijk is. Het maakt echter niet je aangehaalde punten een algemeen slecht programmeer voorbeeld.

  • Simon Verhoeven
  • Registratie: Juni 2008
  • Laatst online: 30-08-2018

Simon Verhoeven

The trial never ends.

Complete lappen tekst inclusief HTML tags in de database.
Zou ik niet noodzakelijk slecht noemen, het hangt gewoon af van de situatie, en wat je er juist in stopt.

Dat admin en password gebruikt is is slecht, maar voor de rest...
Ik denk dat je het ook wat in perspectief moet plaatsen, zoals je zelf zegt is het blijkbaar al geen recente applicatie meer.
Als ze immers onbekend is...

Wat ik wel speciaal vind is dat ze een applicatie laten maken, maar ze dan wel totaal uit het oog verliezen.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 08-10 07:49
Wat is de aanleiding voor die update? Een aanpassing of gewoon een software update die aangeleverd wordt?

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Sebazzz schreef op donderdag 12 november 2009 @ 17:32:
[...]

Dit hoeft natuurlijk niet per definitie een slecht iets te zijn. Je kan prima hele mooie procedurele code kloppen waar een prima applicatie uitkomt. Zie de linux kernel bijvoorbeeld.
Iemand heeft te weinig tijd in de linux kernel doorgebracht.
Als er nu 1 voorbeeld is van OO in C, dan is het wel de linux kernel (of althans grote porties ervan).

ASSUME makes an ASS out of U and ME


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 09-10 20:04

Sebazzz

3dp

H!GHGuY schreef op donderdag 12 november 2009 @ 20:01:
[...]


Iemand heeft te weinig tijd in de linux kernel doorgebracht.
Als er nu 1 voorbeeld is van OO in C, dan is het wel de linux kernel (of althans grote porties ervan).
Ja grapjas, maar het blijft procedureel. Het objectgeoriënteerde is slechts ge-emuleerd met structs.

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


  • !null
  • Registratie: Maart 2008
  • Laatst online: 12:14
Smijten met structs noemen sommigen ook OOP, wat ik op zich wel snap. Maar de grens wordt dan een beetje vaag. Overigens is in dat soort web scripts soms best zinloos om klasses te gaan maken. Sowieso is het een procedureel iets, de webpagina opbouwen. En wat er uit een database komt kun je ook zien als hetzelfde als structs smijten. Er wordt natuurlijk ook in die wereld steeds meer met OOP gedaan.

Ampera-e (60kWh) -> (66kWh)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sebazzz schreef op donderdag 12 november 2009 @ 21:16:
[...]
Ja grapjas, maar het blijft procedureel. Het objectgeoriënteerde is slechts ge-emuleerd met structs.
Dus heet het OO. Het feit dat het geëmuleerd wordt verandert niets aan het paradigma, want dat is wat het is. Een manier om je code te ontwerpen. Of je dat nu emuleert of in een echte OO taal schrijft, het blijft hetzelfde. En in plaats van bar->foo() zeg je foo(bar), waarbij die laatste dan weer een wrapper kan zijn om bar->vtable->foo(bar). Lekker boeiend.
!null schreef op donderdag 12 november 2009 @ 21:49:
Smijten met structs noemen sommigen ook OOP
Er is wel een verschil tussen smijten met structs en het gebruik van structs om de elementen van OO zoals polymorphisme en abstractie te implementeren.

Overigens:
Dat hangt nogal van de use case af.

[ Voor 42% gewijzigd door .oisyn op 12-11-2009 23:00 ]

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.


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
Dus OO Design zonder OO Programming :) Andersom komt weliswaar veel vaker voor, maar de linux-kernel en diverse embedded systemen bewijzen dat OO Design en de programmeertaal C prima samengaan.

  • !null
  • Registratie: Maart 2008
  • Laatst online: 12:14
.oisyn schreef op donderdag 12 november 2009 @ 22:51:
Er is wel een verschil tussen smijten met structs en het gebruik van structs om de elementen van OO zoals polymorphisme en abstractie te implementeren.
Dat is jou invulling van OOP. Ik bedoel, in Visual Basic 6 kan je ook met objecten aan de gang, maar kun je toch niet al die mogelijkheden van C++ om maar wat te noemen.
Wanneer men structs als objecten ziet en hier ook zo mee omgaat, dan bedoel ik dynamisch aanmaken en weer weggooien, zou je kunnen zeggen dat je het op de OOP manier doet.
Maar ik snap je punt wel, bij echt OOP komt toch wel heel snel overerving om de hoek kijken en interfaces etc. (kon in VB6 ook allemaal niet :P )

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Ik moest een issue onderzoeken waarbij een bitveld niet de goede waarde krijgt, kom ik in de code het volgende juweeltje tegen:

C#:
1
bool bvalue = (data == "1" ? true : false || data == "Ja" ? true : false || data == "J" ? true : false || data == "N" ? false : true);

Wie zonder een testscript te schrijven kan zeggen wanneer deze regel true of false teruggeeft krijgt een koekje!

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • nIghtorius
  • Registratie: Juli 2002
  • Laatst online: 28-09 18:50

nIghtorius

Poef!

Haan schreef op vrijdag 13 november 2009 @ 16:08:
Ik moest een issue onderzoeken waarbij een bitveld niet de goede waarde krijgt, kom ik in de code het volgende juweeltje tegen:

C#:
1
bool bvalue = (data == "1" ? true : false || data == "Ja" ? true : false || data == "J" ? true : false || data == "N" ? false : true);

Wie zonder een testscript te schrijven kan zeggen wanneer deze regel true of false teruggeeft krijgt een koekje!
geeft true op alles behalve op 'N" :P

Ryzen 9 5900X @ 5.1Ghz | MPG B550 GAMING CARBON | 96GB DDR4-3200 | RTX 4070TI | 2TB + 1TB m.2 SSD | 3x 1TB HDD | 1x 2TB SATA SSD | 32" G3223Q (4K/144Hz)


Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 09-10 01:21

Nick_S

++?????++ Out of Cheese Error

Haan schreef op vrijdag 13 november 2009 @ 16:08:
Ik moest een issue onderzoeken waarbij een bitveld niet de goede waarde krijgt, kom ik in de code het volgende juweeltje tegen:

C#:
1
bool bvalue = (data == "1" ? true : false || data == "Ja" ? true : false || data == "J" ? true : false || data == "N" ? false : true);

Wie zonder een testscript te schrijven kan zeggen wanneer deze regel true of false teruggeeft krijgt een koekje!
Als data == "N", dan false, anders altijd true.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

nIghtorius schreef op vrijdag 13 november 2009 @ 16:11:
[...]


geeft true op alles behalve op 'N" :P
Ja :')

En dan ga je inderdaad wel fouten krijgen als data ook wordt aangeleverd met 0/1, Ja/Nee of zelfs j/n _O-

Maar hier is je koekje :9
Afbeeldingslocatie: http://technabob.com/blog/wp-content/uploads/2007/04/super_mario_cookie.jpg

[ Voor 19% gewijzigd door Haan op 13-11-2009 16:17 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
sowieso brakke syntax. Waarom niet zoiets:
C#:
1
bool bValue = (data == "j" || data == "1" ...)? true : false;

of nog leuker:
C#:
1
2
bool bValue = (data == "j" || data == "1" ...)? true : 
 ((data== "n" || data == "0" || ....)? false : FILE_NOT_FOUND);


oftewel: if (j/1/true/...) bValue = true; else if (n/0/false/...) bValue = false; else throw SomeException;

[ Voor 16% gewijzigd door MBV op 13-11-2009 17:36 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

MBV schreef op vrijdag 13 november 2009 @ 17:35:
sowieso brakke syntax. Waarom niet zoiets:
C#:
1
bool bValue = (data == "j" || data == "1" ...)? true : false;
Pardon? Waarom niet gewoon
C#:
1
bool bValue = (data == "j" || data == "1" ...);

Waarom in hemelsnaam die ternaire operator? :)

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!

  • nIghtorius
  • Registratie: Juli 2002
  • Laatst online: 28-09 18:50

nIghtorius

Poef!

het beste blijft nog altijd

C#:
1
bool bValue = (data != "N");

:+

[ Voor 11% gewijzigd door nIghtorius op 13-11-2009 17:53 ]

Ryzen 9 5900X @ 5.1Ghz | MPG B550 GAMING CARBON | 96GB DDR4-3200 | RTX 4070TI | 2TB + 1TB m.2 SSD | 3x 1TB HDD | 1x 2TB SATA SSD | 32" G3223Q (4K/144Hz)


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Want deze oplossing was te eenvoudig ofzo? :p

C#:
1
2
3
4
5
Boolean bValue;
if(!Boolean.TryParse(data, out bValue))
{
   throw new Exception("Invalid boolean!");
}

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


Acties:
  • 0 Henk 'm!

Verwijderd

!null schreef op donderdag 12 november 2009 @ 23:34:
[...]


Dat is jou invulling van OOP. Ik bedoel, in Visual Basic 6 kan je ook met objecten aan de gang, maar kun je toch niet al die mogelijkheden van C++ om maar wat te noemen.
Wanneer men structs als objecten ziet en hier ook zo mee omgaat, dan bedoel ik dynamisch aanmaken en weer weggooien, zou je kunnen zeggen dat je het op de OOP manier doet.
Maar ik snap je punt wel, bij echt OOP komt toch wel heel snel overerving om de hoek kijken en interfaces etc. (kon in VB6 ook allemaal niet :P )
Maar OO is niet een taalfeature... Het is een denkwijze/paradigma en dat overstijgt taal. Dat talen als Java, C# en C++ daar meer features voor aanbieden betekent dat niet je in taal die ze niet bieden niet op dergelijke wijze kunt programmeren. Uiteindelijk is een taal niets meer dan een means to an end.\
Als je een beetje creatief bent kun je vast en zeker zelfs met VB6 overerving implementeren, ik zie eigenlijk niet waarom het niet zou kunnen.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
Boeboe schreef op vrijdag 13 november 2009 @ 18:26:
Want deze oplossing was te eenvoudig ofzo? :p

C#:
1
2
3
4
5
Boolean bValue;
if(!Boolean.TryParse(data, out bValue))
{
   throw new Exception("Invalid boolean!");
}
Parsed die ook "Ja" en "Nee"? En ook die ene bijzondere klant die persé "File_Not_Found" als true wil hebben? ;)

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 09-10 20:04

Sebazzz

3dp

MBV schreef op vrijdag 13 november 2009 @ 18:58:
[...]
En ook die ene bijzondere klant die persé "File_Not_Found" als true wil hebben? ;)
Bepalen klanten dat?

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


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 15:53

Reptile209

- gers -

"Wie betaalt, bepaalt" :)

Misschien wil de klant zèlf wel de boel gaan onderhouden en betaalt hij dus alleen voor het opzetten.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 05:43
Haan schreef op vrijdag 13 november 2009 @ 16:08:
C#:
1
bool bvalue = (data == "1" ? true : false || data == "Ja" ? true : false || data == "J" ? true : false || data == "N" ? false : true);

Wie zonder een testscript te schrijven kan zeggen wanneer deze regel true of false teruggeeft krijgt een koekje!
Wel grappig (op een vreselijke manier) dat de precedence van de ?: en || operators hier niet uitmaakt. :) Waarschijnlijk had de auteur van dit gedrocht het bedoeld als:
C#:
1
 (data == "1" ? true : false) || (data == "Ja" ? true : false) ..

Maar als C# dezelfde syntax hanteert als C/C++, dan wordt het geëvalueerd als:
C#:
1
 (data == "1") ? true : ((false || data == "ja") ? true :  (false || ..))

Wat toevallig min of meer op hetzelfde neerkomt (zolang die ternaire expressies maar met false eindigen). :)

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

*snip*
ik had gewoon een topic gemakt in het verkeerde forum...zucht nog slaperig denk ik

[ Voor 92% gewijzigd door vorlox op 15-11-2009 08:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Soms is het niet goed om 's nachts te werken, vooral met programmeren komen er dan soms verassende dingen uit, zo ook bij dit voorbeeldje dat ik net ergens tegenkwam:
PHP:
1
2
3
4
if (preg_match('/[a-z1-9\._-]+\@[a-z1-9_-]+\.[a-z\.]{2,7}/', strtolower($sMail)))
{
      // mail = ok...?
}


:'(

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 06-10 19:38
nIghtorius schreef op vrijdag 13 november 2009 @ 17:52:
het beste blijft nog altijd

C#:
1
bool bValue = (data != "N");

:+
:D Wat kan het leven toch eenvoudig zijn.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Verwijderd schreef op maandag 16 november 2009 @ 16:31:
Soms is het niet goed om 's nachts te werken, vooral met programmeren komen er dan soms verassende dingen uit, zo ook bij dit voorbeeldje dat ik net ergens tegenkwam:
PHP:
1
2
3
4
if (preg_match('/[a-z1-9\._-]+\@[a-z1-9_-]+\.[a-z\.]{2,7}/', strtolower($sMail)))
{
      // mail = ok...?
}


:'(
Mwa zo erg is het toch niet..

Acties:
  • 0 Henk 'm!

Verwijderd

Megamind schreef op maandag 16 november 2009 @ 16:41:
[...]

Mwa zo erg is het toch niet..
Look closer... ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Soultaker schreef op vrijdag 13 november 2009 @ 19:29:
[...]

Wel grappig (op een vreselijke manier) dat de precedence van de ?: en || operators hier niet uitmaakt. :)
:X Good spot :)

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!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Verwijderd schreef op maandag 16 november 2009 @ 16:31:
Soms is het niet goed om 's nachts te werken, vooral met programmeren komen er dan soms verassende dingen uit, zo ook bij dit voorbeeldje dat ik net ergens tegenkwam:
PHP:
1
2
3
4
if (preg_match('/[a-z1-9\._-]+\@[a-z1-9_-]+\.[a-z\.]{2,7}/', strtolower($sMail)))
{
      // mail = ok...?
}


:'(
Geen checks op of een e-mailadres/domain met een streepje/punt eindigt.
Geen subdomeinen mogelijk.

E-mailadresverificatie is niet makkelijk af te handelen me 1 reguliere expressie.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mafkees schreef op maandag 16 november 2009 @ 16:57:
[...]

Geen checks op of een e-mailadres/domain met een streepje/punt eindigt.
Mag een mailadres niet op een punt eindigen? Een domein iig wel, sterker nog, ze eindigen per definitie met een punt, alleen mag je die laatste punt ook weglaten.
Wat ik verder raar vind is dat je blijkbaar geen 0 mag hebben in je adres.
E-mailadresverificatie is niet makkelijk af te handelen me 1 reguliere expressie.
Eens. Als je al wilt controleren kijk dan of er bijv. geen spaties in staan en dat er precies 1 @ in voorkomt. Voor de rest heb je er alleen maar mensen mee waarvan hun verder valide e-mailadres niet door jouw check heen komt omdat hij te restrictief is.

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

.oisyn schreef op maandag 16 november 2009 @ 17:11:
[...]
Wat ik verder raar vind is dat je blijkbaar geen 0 mag hebben in je adres.
Inderdaad raar, dat is 't ergste aan die code als je het mij vraagt... :X

[ Voor 7% gewijzigd door Verwijderd op 16-11-2009 17:14 ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14:32
Kijk nog beter: omdat het een perl regex (preg) is zal hij bijna altijd matchen, omdat er geen ^ en $ aan begin en eind staan. Dus een subdomein mag wel, als het hoofddomein tussen de 2 en 7 tekens heeft :P

Enneh, het is PHP met een Regex erin. PHP spreekt voor zich :P en regex ook wel een beetje: "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems."

[ Voor 37% gewijzigd door MBV op 16-11-2009 18:54 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Gewoon dit doen dus:

PHP:
1
2
3
4
if ( filter_var($sMail, FILTER_VALIDATE_EMAIL) )
{
  // mail ok
}

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

MBV schreef op maandag 16 november 2009 @ 18:52:
Kijk nog beter: omdat het een perl regex (preg) is zal hij bijna altijd matchen, omdat er geen ^ en $ aan begin en eind staan.
Ah ja, dat was ik nog vergeten te posten, ik had 'm wel gezien idd. Al is "bijna altijd" wel wat overdreven.

En mensen met zo'n adres zijn al helemaal screwed :P

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: 09-10 20:04

Sebazzz

3dp

.oisyn schreef op maandag 16 november 2009 @ 19:48:
[...]

En mensen met zo'n adres zijn al helemaal screwed :P
Moet je maar een normaal adres nemen :+

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


Acties:
  • 0 Henk 'm!

Verwijderd

Michali schreef op maandag 16 november 2009 @ 19:02:
Gewoon dit doen dus:

PHP:
1
2
3
4
if ( filter_var($sMail, FILTER_VALIDATE_EMAIL) )
{
  // mail ok
}
Jep, maar bij PHP <5.2 moet er een andere oplossing voor verzonnen worden, en laat dat in mijn geval nou net op 't verkeerde moment moeten... :+
/me moet van z'n PHP-editor afblijven als hij té moe is... :X

Acties:
  • 0 Henk 'm!

  • fiftyhillswest
  • Registratie: Oktober 2009
  • Laatst online: 14:33
@GuidoH

Dit heeft een hele simpele oplossing: Sloop de regex van FILTER_VALIDATE_EMAIL uit de source van PHP!
Letterlijke kopie:
code:
1
"/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D"


Gebruik deze en je kunt gewoon je email adressen validaten ;)

Acties:
  • 0 Henk 'm!

Verwijderd

fiftyhillswest schreef op maandag 16 november 2009 @ 21:18:
@GuidoH

Dit heeft een hele simpele oplossing: Sloop de regex van FILTER_VALIDATE_EMAIL uit de source van PHP!
Letterlijke kopie:
code:
1
"/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D"


Gebruik deze en je kunt gewoon je email adressen validaten ;)
Ahh, tuurlijk... Dat had ik natuurlijk zo uit m'n mouwen geschud als ik goed wakker was. :+

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
fiftyhillswest schreef op maandag 16 november 2009 @ 21:18:
@GuidoH

Dit heeft een hele simpele oplossing: Sloop de regex van FILTER_VALIDATE_EMAIL uit de source van PHP!
Letterlijke kopie:
code:
1
"/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?(\\.(?=[A-Za-z0-9\\-]))?)+[A-Za-z]+))$/D"


Gebruik deze en je kunt gewoon je email adressen validaten ;)
Die is wel leuk, maar hoe komt het dat de officiele regex zo veel groter is dan?

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)


(Niet dat je dit ooit in productiecode zou mogen gebruiken :P ).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 15:30

RayNbow

Kirika <3

roy-t schreef op maandag 16 november 2009 @ 23:13:
[...]


Die is wel leuk, maar hoe komt het dat de officiele regex zo veel groter is dan?

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
code:
1
*snip*


(Niet dat je dit ooit in productiecode zou mogen gebruiken :P ).
Hoezo officiele regexp? :p
This regular expression will only validate addresses that have had any comments stripped and replaced with whitespace (this is done by the module).

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
roy-t schreef op maandag 16 november 2009 @ 23:13:
[...]
(Niet dat je dit ooit in productiecode zou mogen gebruiken :P ).
Uhhhhhm, dus die copy-paste van net is toch af te keuren ;)

Maar email-adressen / domain-checks moet je wmb gewoon niet enkel in regexen afhandelen, gewoon kijken bij server of hij het accepteert. ( en ja dit is extreem duur en dus niet te gebruiken voor het in 1 klap validaten van 100.000 emailadressen )
Naast alle officiele regels die al voor genoeg hoofdbrekens zorgen heb je ook nog eens kans op interne machines die meer dan de officiele standaard accepteren.

Qua email/domein regels hebben wij gewoon een gelaagd iets.
1 : Kijken in vast regime van regexen of het daarin valt ( hotmail / gmail / lijst van xxxx providers etc )
2 : Kijken of het in een algemene regex valt. Zoja logmelding om op te kunnen nemen in 1
3 : Kijken of de ontvangende server het accepteert. Zoja logmelding met warning voor nadere bestudering en opname in 1.

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Gomez12 schreef op maandag 16 november 2009 @ 23:38:
[...]

Uhhhhhm, dus die copy-paste van net is toch af te keuren ;)

Maar email-adressen / domain-checks moet je wmb gewoon niet enkel in regexen afhandelen, gewoon kijken bij server of hij het accepteert. ( en ja dit is extreem duur en dus niet te gebruiken voor het in 1 klap validaten van 100.000 emailadressen )
Naast alle officiele regels die al voor genoeg hoofdbrekens zorgen heb je ook nog eens kans op interne machines die meer dan de officiele standaard accepteren.

Qua email/domein regels hebben wij gewoon een gelaagd iets.
1 : Kijken in vast regime van regexen of het daarin valt ( hotmail / gmail / lijst van xxxx providers etc )
2 : Kijken of het in een algemene regex valt. Zoja logmelding om op te kunnen nemen in 1
3 : Kijken of de ontvangende server het accepteert. Zoja logmelding met warning voor nadere bestudering en opname in 1.
Nouja die servers / routers hebben ook een systeem om te controleren wat het nu eigenlijk is dat je tegen ze aan praat. Dus ergens moet er een parser/regex zijn die zowel snel is, als correct :).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Misschien niet helemaal op z'n plaats, maar dit was zo snel even het beste topic wat ik kon verzinnen voor deze post uit stack overflow. Gaat om het 1e antwoord :)
http://stackoverflow.com/...ined-tags/1732454#1732454

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op maandag 16 november 2009 @ 20:54:
[...]

Jep, maar bij PHP <5.2 moet er een andere oplossing voor verzonnen worden, en laat dat in mijn geval nou net op 't verkeerde moment moeten... :+
/me moet van z'n PHP-editor afblijven als hij té moe is... :X
Gewoon eisen dat je host een versie hoger heeft dan 5.2 natuurlijk :) Wij vragen minimaal 5.2.6 en dan is dat zelfs nog een versie van ruim een jaar oud (zeg ik uit mn hoofd).

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Cartman! schreef op dinsdag 17 november 2009 @ 10:23:
[...]

Gewoon eisen dat je host een versie hoger heeft dan 5.2 natuurlijk :) Wij vragen minimaal 5.2.6 en dan is dat zelfs nog een versie van ruim een jaar oud (zeg ik uit mn hoofd).
De Debian stable houd ik meestal aan als standaard. Nu dus 5.2.6 :)

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
.oisyn schreef op maandag 16 november 2009 @ 17:11:
[...]

Mag een mailadres niet op een punt eindigen? Een domein iig wel, sterker nog, ze eindigen per definitie met een punt, alleen mag je die laatste punt ook weglaten.
Wat ik verder raar vind is dat je blijkbaar geen 0 mag hebben in je adres.
Het user-part durf ik niet met zekerheid te zeggen, ik weet niet of user.@blabla.nl mag - de T.net parser vindt van wel :P Ken de RFC niet uit m'n koppie :P

Wat ik met domeinen bedoel is dat die regex dingen als mijnadres@student.utwente.nl niet passed.

[ Voor 8% gewijzigd door Mafkees op 17-11-2009 11:03 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja maar je zei ook dat er geen check was die controleert of een domein op een punt eindigt, terwijl dat volgens de gepastete regex werd geaccepteerd. En ik zeg dat een domein gewoon mag eindigen in een punt. Sterker nog, elk domein eindigt in een punt. We zitten nu op "gathering.tweakers.net."

[ Voor 17% gewijzigd door .oisyn op 17-11-2009 11:25 ]

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!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Pkunk schreef op dinsdag 17 november 2009 @ 10:13:
Misschien niet helemaal op z'n plaats, maar dit was zo snel even het beste topic wat ik kon verzinnen voor deze post uit stack overflow. Gaat om het 1e antwoord :)
http://stackoverflow.com/...ined-tags/1732454#1732454
Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp.
_O-

Acties:
  • 0 Henk 'm!

Verwijderd

Chuck Norris can parse HTML with regex
:P

Acties:
  • 0 Henk 'm!

  • nIghtorius
  • Registratie: Juli 2002
  • Laatst online: 28-09 18:50

nIghtorius

Poef!

.oisyn schreef op dinsdag 17 november 2009 @ 11:24:
Ja maar je zei ook dat er geen check was die controleert of een domein op een punt eindigt, terwijl dat volgens de gepastete regex werd geaccepteerd. En ik zeg dat een domein gewoon mag eindigen in een punt. Sterker nog, elk domein eindigt in een punt. We zitten nu op "gathering.tweakers.net."
klopt de laatste "." is de root der rooten :P

Ryzen 9 5900X @ 5.1Ghz | MPG B550 GAMING CARBON | 96GB DDR4-3200 | RTX 4070TI | 2TB + 1TB m.2 SSD | 3x 1TB HDD | 1x 2TB SATA SSD | 32" G3223Q (4K/144Hz)


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
mithras schreef op dinsdag 17 november 2009 @ 10:43:
[...]
De Debian stable houd ik meestal aan als standaard. Nu dus 5.2.6 :)
Das idd. opzich prima, daarom is dat ook ons minimum ;)

Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
nIghtorius schreef op dinsdag 17 november 2009 @ 17:05:
[...]


klopt de laatste "." is de root der rooten :P
Als je het probeerd zul je inderdaad bij de tweakers servers uitkomen, alleen herkent tweakers het niet helemaal.
[url="http://www.tweakers.net./"]http://www.tweakers.net./[/url]

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat komt omdat de browser de punt ook meestuurt in de Host HTTP header en Apache geen virtual host kent met een dergelijke naam. [url]http://nu.nl./[/] werkt bijvoorbeeld wel. [url]http://oisyn.nl./[/] ook, maar die doet een rewrite :Y)

[ Voor 3% gewijzigd door .oisyn op 18-11-2009 13:04 ]

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!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

.oisyn schreef op woensdag 18 november 2009 @ 13:03:
Dat komt omdat de browser de punt ook meestuurt in de Host HTTP header en Apache geen virtual host kent met een dergelijke naam.
In het geval van T.net kent apache die vhost wel (default geloof ik), alleen de software kent die vhost niet en die geeft deze deze melding :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-10 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Soit :). Ik neem aan dat je met "de software" tnet's eigen codebase bedoelt?

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.

Pagina: 1 ... 17 ... 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. :)