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

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 05:18
MrBucket schreef op dinsdag 02 maart 2010 @ 22:58:
Met andere woorden: het percentage mensen dat consequent "de meest linker browser" kiest omdat ze geen voorkeur hebben is te verwaarlozen. [..] Dus als het goed is zal 't Microsoft echt jeuken of de distributie uniform is of niet.
Het gaat me er ook niet echt om of het in de praktijk enige bias veroorzaakt, maar het is gewoon het principe. Er is maanden- of zelfs jargenlang getouwtrek met de Europese Commissie aan de ontwikkeling van die site vooraf gegaan. Uiteindelijk is beslist dat die site er moest komen en is precies vastgelegd hoe 'ie er uit moest zien en hoe 'ie moest werken. Ik neem aan dat een of andere hoge pief bij Microsoft zich met de implementatie bezig heeft gehouden en de site goegekeurd heeft, want als Microsoft dit verprutst kan de EC weer miljoenenboetes gaan opleggen.

De uiteindelijk site is zo simpel, en dan nog zijn ze in staat om het schuffle-algoritme verkeerd te implementeren! Als techneut krijg ik daar jeuk van. Zou dat ook gebeurd zijn als Google het scherm had moeten ontwikkelen? Ik vraag het me sterk af.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
nee.

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Kees Kluskens schreef op dinsdag 02 maart 2010 @ 22:44:
Ik heb mijn moeder gewoon verteld dat Internet Explorer "slecht" is en Firefox "goed", voor de rest heeft ze er nooit over geklaagd :P.
Wat mij opviel is dat de ABN bank Firefox niet ondersteund. Mijn oma belde me laatst (ik heb ook bij haar Firefox geïnstalleerd) met de vraag waarom online bankieren het niet deed. Toen merkte ik dat hetzelfde wel lukte met IE, maar niet met FF. Dat slaat toch gewoon nergens op :S. Pure discriminatie :P.
Al deze verhalen bewijzen wel een beetje mijn punt. Raar dat ABN Firefox niet ondersteund, ze hebben zelfs volledige support voor Opera (tijdje terug kreeg je nog een melding dat de browser niet herkend werd, maar nu werkt alles goed).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 13:02
Herko_ter_Horst schreef op dinsdag 02 maart 2010 @ 22:05:
[...]

Je denkt als een tweaker. De "gemiddelde" gebruiker zit op IE omdat dat er al op stond en/of ze aan IE gewend zijn. Niet vanwege een bewust keuze.

Als ik mijn moeder niet had uitgelegd dat ze op een blauw icoontje met een rood/oranje randje moet klikken om een browser te starten (Firefox dus, die ik er voor haar heb opgezet), dan kwam ze uberhaupt niet aan browsen toe, laat staan dat ze weloverwogen een keus maakt om bij een browser te blijven of een andere te kiezen.

Oftewel: zonder mijn hulp zou ze gewoon IE gebruiken, omdat ze dat in een "Windows voor Dummies" boekje had gelezen, of omdat de buurvrouw het gebruikt. Niet omdat ze dat persé zou willen, maar omdat ze niet beter weet. Dát is waar de de EU nu verandering in heeft gebracht: het brengt het bestaan van andere browsers onder de aandacht van de "domme" gebruikers. (Of die daar een goede keuze in kunnen maken is een heel ander verhaal).
Nou, als iemand IE snapt en verder niet al te handig met computers is, dan blijven ze maar lekker IE gebruiken. De normale gebruiker merkt toch geen verschil.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
roy-t schreef op woensdag 03 maart 2010 @ 09:23:
[...]


Al deze verhalen bewijzen wel een beetje mijn punt. Raar dat ABN Firefox niet ondersteund, ze hebben zelfs volledige support voor Opera (tijdje terug kreeg je nog een melding dat de browser niet herkend werd, maar nu werkt alles goed).
Zelfde met de Postbank site. Sommige delen krijg je simpelweg niet geserveerd als er "ubuntu" in je useragent string staat. Terwijl als je je useragent string aanpast, de desbetreffende pagina prima blijkt te werken.

't zal wel aan mij liggen maar waarom zou je in hemelsnaam zo'n blokkade inbouwen? Met de huidige HTML-standaarden heb je 99,9% kans dat het gewoon werkt, zelfs al ben je te lui om te testen. Dus waarom voor die 0,1% kans zo'n pagina blokkeren?

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
mcDavid schreef op woensdag 03 maart 2010 @ 10:24:
[...]


Zelfde met de Postbank site. Sommige delen krijg je simpelweg niet geserveerd als er "ubuntu" in je useragent string staat. Terwijl als je je useragent string aanpast, de desbetreffende pagina prima blijkt te werken.

't zal wel aan mij liggen maar waarom zou je in hemelsnaam zo'n blokkade inbouwen? Met de huidige HTML-standaarden heb je 99,9% kans dat het gewoon werkt, zelfs al ben je te lui om te testen. Dus waarom voor die 0,1% kans zo'n pagina blokkeren?
Omdat het een bank is en niet een gezellig forum? Gokken dat het werkt kun je dan niet maken :)

[ Voor 3% gewijzigd door roy-t op 03-03-2010 11:10 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
roy-t schreef op woensdag 03 maart 2010 @ 11:10:
[...]


Omdat het een bank is en niet een gezellig forum? Gokken dat het werkt kun je dan niet maken :)
Geef dan gewoon de melding dat het niet supported is, en dat fouten voor eigen risico zijn.

“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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
yup, ook mijn gedachte. Gewoon in de mededelingenbalk: "De browser die u gebruikt wordt niet ondersteund. Indien u problemen ondervindt s.v.p. een van de ondersteunde browsers gebruiken. "

En waarom ze bij een niet-ondersteunde browser alleen het ajax-verhaal uitschakelen, en niet bang zijn voor de veiligheid van de encryptie etc snap ik niet. Usability lijkt me toch van minder belang :S

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Woy schreef op woensdag 03 maart 2010 @ 11:13:
[...]

Geef dan gewoon de melding dat het niet supported is, en dat fouten voor eigen risico zijn.
Ik denk niet dat dit juridisch gezien helpt als er echt wat fout gaat.

Maar genoeg gezeur hier over, slechte programmeer voorbeelden willen we zien :D.

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
roy-t schreef op woensdag 03 maart 2010 @ 11:10:
[...]


Omdat het een bank is en niet een gezellig forum? Gokken dat het werkt kun je dan niet maken :)
Dan maar liever zeker weten dat het niet werkt? Dat slaat nergens op.

Kijk, als het nou een veiligheidsissue zou zijn, kan ik me datsoort uitsluitingen voorstellen. Maar als de veiligheid van een bankierssysteem afhangt van watvoor useragent-string je meestuurt, dan doe je toch wel iets goed verkeerd! (gelukkig is dat in dit geval iig niet aan de orde)

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
mcDavid schreef op woensdag 03 maart 2010 @ 12:29:
[...]

Dan maar liever zeker weten dat het niet werkt? Dat slaat nergens op.

Kijk, als het nou een veiligheidsissue zou zijn, kan ik me datsoort uitsluitingen voorstellen. Maar als de veiligheid van een bankierssysteem afhangt van watvoor useragent-string je meestuurt, dan doe je toch wel iets goed verkeerd! (gelukkig is dat in dit geval iig niet aan de orde)
Stel door een rare render fout zitten wat knoppen op de verkeerde plek waardoor je via via geld overmaakt naar de verkeerde rekening? Als dit bijvoorbeeld bij het adresboek zou gebeuren wat veel banken hebben is dit niet eens heel erg far fetched.

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Ach, ik zal ook nog ff ranten :P

Op mijn ex-werk hadden/hebben ze ProTime, dat werkt alleen met IE. Geen FF, Chrome, Opera, ongeacht het OS.

Aangezien ze op die afdeling alleen maar met Linux-distro's werken, moest er een speciale (virtuele) machine ingericht worden met Windows en IE erop om zo je urenschema in te kunnen vullen.

Teh Horror

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
Gevonden in een open source project van een paar week geleden:
Een rare for loop die meteen iets returned.
Java:
1
2
3
4
5
6
            for(int i = 1; i <= worldMapTemplate.getTwinCount(); i++) // FIXME: DEAD CODE!
            {
                WorldMapInstance inst = getWorldMapInstance(i);
                // TODO! user count etc..
                return inst;
            }

Gelukkig zag iemand anders ook in dat de for loop nutteloos was en dus heeft hij het aangepast:
Java:
1
2
3
4
5
6
7
8
            int i = 1;
            while(i <= worldMapTemplate.getTwinCount())
            {       
                WorldMapInstance inst = getWorldMapInstance(i);
                i++;
                // TODO! user count etc..
                return inst;
            }

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
...Help mij. Ik moet het volgende refactoren naar prepared statements.

Java:
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
        String sql =
                "SELECT TOP 100 p.id, p.lastname, p.prefix, p.firstname, "
                        + "p.soccername, e.name as employername " + "FROM Person p "
                        + "LEFT JOIN Employer e ON (e.id = p.currentemployer) "
                        + "WHERE p.isplayer = 1 " + "AND NOT p.lastname IS NULL ";
        if (active) {
            sql += "AND p.active = 1 ";
        }

        if (StringUtils.isNotBlank(name)) {
            sql += "AND soccername LIKE '%" + name + "%' ";
        }

        if (teamId > 0) {
            sql +=
                    " AND p.id IN (SELECT player FROM PlayerInTeamInSeason pit "
                            + "INNER JOIN Team t ON pit.team = t.id WHERE t.active = 1 AND t.id = "
                            + teamId;
            if (seasonId > 0) {
                sql += " AND pit.season = " + seasonId;
            }
            sql += ")";
        } else {
            if (StringUtils.isNotBlank(club)) {
                sql +=
                        "AND (e.name LIKE '%" + club + "%' OR p.id IN (SELECT player "
                                + "FROM PlayerInTeamInSeason pit "
                                + "INNER JOIN Team t ON pit.team = t.id "
                                + "WHERE t.active = 1 AND t.name LIKE '%" + club + "%'";
                if (seasonId > 0) {
                    sql += " AND pit.season = " + seasonId;
                }
                sql += "))";
            } else {
                sql +=
                        "AND (p.id IN (SELECT player " + "FROM PlayerInTeamInSeason pit "
                                + "INNER JOIN Team t ON pit.team = t.id WHERE t.active = 1";
                if (seasonId > 0) {
                    sql += " AND pit.season = " + seasonId;
                }
                sql += "))";
            }
        }
        if ("club".equals(sortField)) {
            sql += " ORDER BY e.name, p.lastname";
        } else {
            sql += " ORDER BY p.lastname";
        }


:|

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
Dat is toch simpel? Gewoon onderaan:
Java:
1
PreparedStatement stmt = conn.prepareStatement(sql);

>:)
* MBV heeft Compiere en Adempiere, GPL ERP-systemen, bestudeerd voor scriptie, en is niet snel meer verbaasd.
Misschien een idee om het hele zaakje te schrappen, en de specs erbij te pakken te vragen wat het nou eigenlijk moet doen?

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
MBV schreef op vrijdag 12 maart 2010 @ 13:32:
Dat is toch simpel? Gewoon onderaan:
Java:
1
PreparedStatement stmt = conn.prepareStatement(sql);

>:)
* MBV heeft Compiere en Adempiere, GPL ERP-systemen, bestudeerd voor scriptie, en is niet snel meer verbaasd.
Misschien een idee om het hele zaakje te schrappen, en de specs erbij te pakken te vragen wat het nou eigenlijk moet doen?
Heb ik al gedaan (dat preparedstatement ding) ;). Maar ja, ik ga het helemaal weghalen en opnieuw uitvinden. D'r zijn geen specs van, de hele applicatie is (was) wat ad-hoc in elkaar gezet. Wat het moet doen is duidelijk genoeg in de method signature:

Java:
1
 public Set<PlayerData> searchPlayers(String sortField, String name, String club, int teamId, int seasonId, int matchId, boolean active) throws SQLException

De originele ontwikkelaar heeft er volgens mij een paar weken (tops) aan besteed, ik heb minstens evenveel (en waarschijnlijk meer) eraan besteed om het programma af te maken en, erger nog, de zaak te refactoren en op te ruimen.

Haastige spoed is zelden goed, in dit geval.

Ik zal nog wel eens zoeken of er ergens een goeie oplossing is voor dit soort problemen (dwz zoekqueries met meerdere optionele parameters, SQL query variabel opbouwen). Heb het in een ander programma opgelost door een X aantal functies te maken met elk een eigen query. De ene had dit veld wel en de ander niet, de ander had dit veld niet en de ander wel, etc.

Edit / update: Heb er dit nog van kunnen maken: http://tweakers.pastebin.com/zcAgMhRh (verglijk met oude versie http://tweakers.pastebin.com/u9aCQcWi) (gepost met de Chrome pastebin addon van Joshua _/-\o_

[ Voor 31% gewijzigd door YopY op 12-03-2010 15:44 ]


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 10:15
MBV schreef op vrijdag 12 maart 2010 @ 13:32:
Dat is toch simpel? Gewoon onderaan:
Java:
1
PreparedStatement stmt = conn.prepareStatement(sql);

>:)
* MBV heeft Compiere en Adempiere, GPL ERP-systemen, bestudeerd voor scriptie, en is niet snel meer verbaasd.
Misschien een idee om het hele zaakje te schrappen, en de specs erbij te pakken te vragen wat het nou eigenlijk moet doen?
Volgens bedoelen ze dat de query herschreven moet worden zodat je niet telkens zaken eraan plakt. Dus één query fixen met vraagtekens en daarna die plekken invullen. Op die manier is het veel leesbaarder.

Java:
1
2
3
       String sql = "SELECT * FROM movies WHERE year_made = ?";
        prest = con.prepareStatement(sql);
        prest.setInt(1,2002);

Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 08:49

Standeman

Prutser 1e klasse

Lekkere signature heeft die method ook. Kennen ze geen objecten ofzo?

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Het is wel niet de bedoeling om dit topic te highjacken om jouw problemen op te lossen :|

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
BarôZZa schreef op vrijdag 12 maart 2010 @ 15:54:
[...]

Volgens bedoelen ze dat de query herschreven moet worden zodat je niet telkens zaken eraan plakt. Dus één query fixen met vraagtekens en daarna die plekken invullen. Op die manier is het veel leesbaarder.

Java:
1
2
3
       String sql = "SELECT * FROM movies WHERE year_made = ?";
        prest = con.prepareStatement(sql);
        prest.setInt(1,2002);
Je moet je sarcasmeradar eens bijstellen, hij doet het zo te zien niet al te best ;)

Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 10:15
Zou slechte sarcasme zijn als hij oppert te vragen wat het moet doen ;)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
Mijn reactie, waar jij op reageerde, was sarcasme. Ik weet prima wat prepared statements zijn, en snap dus precies waarom mijn voorstel niet gaat werken. Vandaar o.a. de smiley.

@YopY: jouw 'betere' oplossing vind ik echt te slecht voor woorden. Kan je niet op z'n minst labels eraan hangen, dat argument 3 altijd hetzelfde is? :X

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
function safe(&$value, $key){
    $value = mysql_real_escape_string($value);
}

// [...]

$sql = mysql_query('SELECT * FROM partners WHERE partners_ip = "' . safe($_SERVER['REMOTE_ADDR']) .'"');


Tja, ervoor zorgen dat er gewoon niets in je query terecht komt is ook een manier om SQL-injectie tegen te gaan... En zo zitten er nog wel meer juweeltjes in het stuk code dat ik op het moment aan het doornemen ben. Gelukkig ben ik niet verplicht om er aan te gaan werken ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Er wordt een $key verwacht, maar niet gegeven, dus hij doet het sowieso niet? Verder heb ik nog nooit een IP-adres gezien die SQL injecteert.. Maar goed, beter 1x te veel dan 1x te weinig. :9

Acties:
  • 0 Henk 'm!

Verwijderd

Ook dat ja. Bij mij geeft het stukje dan ook gewoon een mooie warning, maar blijkbaar heeft er iemand zitten coden met error_reporting off of iets dergelijks...

(Overigens een valkuil waar ik zelf laatst nog in gevallen ben, na een upgrade van PHP was de error_reporting in php.ini gewijzigd zodat errors op mijn development server niet weergegeven werden. Op de productieserver stond error_reporting merkwaardig genoeg wel op E_ALL met voorspelbare gevolgen... gelukkig was alles na 1 kleine wijziging binnen tien seconden weer in orde :9~)

Acties:
  • 0 Henk 'm!

Verwijderd

Ook leuk als je dezelfde variabele in 2 queries gebruikt... :+

Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Uit een stuk java code aangeleverd door school :P

Java:
1
2
3
4
5
6
7
8
9
10
11
public void clearDownloadList() {
  downloadList.clear();
  for(int i = 0; i < MAX_DOWNLOADS; i++) {
    labelFile[i].setText("Unassigned (" + prepend(i) + ")");
    labelSize[i].setText("?";
    labelFile[i].updateUI();
    labelSize[i].updateUI();
    progFile[i].setValue(0);
    break; //add only once
  }
}

Acties:
  • 0 Henk 'm!

Verwijderd

HMS schreef op donderdag 18 maart 2010 @ 17:05:
Uit een stuk java code aangeleverd door school :P

Java:
1
2
3
4
5
6
7
8
9
10
11
public void clearDownloadList() {
  downloadList.clear();
  for(int i = 0; i < MAX_DOWNLOADS; i++) {
    labelFile[i].setText("Unassigned (" + prepend(i) + ")");
    labelSize[i].setText("?";
    labelFile[i].updateUI();
    labelSize[i].updateUI();
    progFile[i].setValue(0);
    break; //add only once
  }
}
Pff, ik kan geeneens java, maar 8)7 :
for(int i = 0; i < MAX_DOWNLOADS; i++) {
..
break; //add only once
}
Vertel eens wat er verder niet aan spoort?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Ik mis nog een sluiten-haakje op regel 5.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 11:10

Haan

dotnetter

De grote wtf is toch wel dat je een for-loopt schrijft die je na de eerste iteratie met een break afkapt en aan het commentaar te zien ook alleen bedoelt om maar 1 keer iets te doen.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Haan schreef op donderdag 18 maart 2010 @ 19:09:
De grote wtf is toch wel dat je een for-loopt schrijft die je na de eerste iteratie met een break afkapt en aan het commentaar te zien ook alleen bedoelt om maar 1 keer iets te doen.
Gezien het commentaar is er wel *by-design* voor gekozen :P

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Bob
  • Registratie: Mei 2005
  • Laatst online: 11:26

Bob

Matis schreef op donderdag 18 maart 2010 @ 19:10:
[...]

Gezien het commentaar is er wel *by-design* voor gekozen :P
Dan zorg je er toch by design voor dat dat niet in een loop staat ... :)

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 11:10

Haan

dotnetter

Dat bedoel ik ook ja, als je 'by design' iets maar 1x gaat doen, is dat natuurlijk een behoorlijk wtf om in een loop te zetten en daar uit te breken na 1 iteratie.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
In code ben ik pasgeleden ongeveer dit tegengekomen.. ik heb het even overgetypt dus 't zal wel niet compilen, de strekking snap je toch wel. ASP.NET 3.5 btw.
HTML:
1
2
3
4
5
6
<asp:checkboxlist runat=server id=cbl1 onprerender="cbl1_onprerender" />
<asp:checkboxlist runat=server id=cbl2 onprerender="cbl2_onprerender" />
<asp:checkboxlist runat=server id=cbl3 onprerender="cbl3_onprerender" />
<asp:checkboxlist runat=server id=cbl4 onprerender="cbl4_onprerender" />
<asp:checkboxlist runat=server id=cbl5 onprerender="cbl5_onprerender" />
<asp:checkboxlist runat=server id=cbl6 onprerender="cbl6_onprerender" />

C#:
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
string[] someList = { "bla", "blie", "bloeh" }

protected void cbl1_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl1.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}

protected void cbl2_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl2.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}

protected void cbl3_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl3.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}
protected void cbl4_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl4.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}
protected void cbl5_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl5.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}
protected void cbl6_onprerender(object sender, EventArgs e)
{
    for(int x = 0; x < someList.Length; x++)
    {
        try { cbl6.FindByValue(someList[x]).Selected = true; }
        catch { }
    }
}

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

't Bewijst wel weer dat de code (redelijk) reuseable is! :+

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Nja, hangt er vanaf wat je reusable noemt. 216 opgegeten exceptions in Visual Studio's output noem ik niet echt reusable meer. :+

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

Ah geeft dat exceptions.. :9 Dan is 't wss niet eens useable, laat staan reusable. :P

[ Voor 50% gewijzigd door Verwijderd op 18-03-2010 23:09 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Dat geeft exceptions ja... want die checkboxlists bevatten slechts een aantal items. De rest uit die string[] vindt hij niet, maar hij gooit een NullReferenceException. Ik heb dat stukje code trouwens gerefactord tot 1 method die d.m.v. LINQ keurig de juiste items ophaalt en niet meer dan dat. :-)

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

Ah, da's stukken beter... Ik weet ook nog een slecht programmeervoorbeeld:

C#:
1
// en dan hier code enzulks..

:+

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Haan schreef op donderdag 18 maart 2010 @ 20:08:
Dat bedoel ik ook ja, als je 'by design' iets maar 1x gaat doen, is dat natuurlijk een behoorlijk wtf om in een loop te zetten en daar uit te breken na 1 iteratie.
Het wordt 0 of 1 keer gedaan, afhankelijk van MAX_DOWNLOADS, niet per se 1x. Dus het had beter een if kunnen zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

//let's make it look like a 128-char key (like RIPEMD128)
$password = $password . substr(md5($this->username), 0, 32);
MD5 ís al 32 tekens..

Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

HuHu schreef op donderdag 18 maart 2010 @ 23:20:
[...]

Het wordt 0 of 1 keer gedaan, afhankelijk van MAX_DOWNLOADS, niet per se 1x. Dus het had beter een if kunnen zijn.
Het stukje code was om dingen op een JPanel te plaatsen, nadat de gebruiker alle downloads gecleared had :P.

MAX_DOWNLOADS moet > 1 zijn ;-)

En de grote WTF was idd de for() met gelijk een break statement :9

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

HMS schreef op vrijdag 19 maart 2010 @ 10:54:
[...]


Het stukje code was om dingen op een JPanel te plaatsen, nadat de gebruiker alle downloads gecleared had :P.

MAX_DOWNLOADS moet > 1 zijn ;-)

En de grote WTF was idd de for() met gelijk een break statement :9
Kans is natuurlijk groot dat het vroeger anders is geweest, dat soort code kom je dan vaker tegen dat een feature deels teruggedraaid wordt. Je gaat in de praktijk dan niet de hele code doorlopen om te kijken of daardoor onlogische code ontstaan is.

Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Erkens schreef op vrijdag 19 maart 2010 @ 11:02:
[...]

Kans is natuurlijk groot dat het vroeger anders is geweest, dat soort code kom je dan vaker tegen dat een feature deels teruggedraaid wordt. Je gaat in de praktijk dan niet de hele code doorlopen om te kijken of daardoor onlogische code ontstaan is.
Zoals ik bij het stukje code had aangegeven, was een school opdracht ;-). Dan kom je de vaagste constructies tegen, de aangeleverde code is dan ook grotendeels weg gegooid.

Acties:
  • 0 Henk 'm!

  • Sc0tTy
  • Registratie: December 2003
  • Laatst online: 19-09 23:08
Ik heb vaak zat code van leraren bij mij op de Hogeschool Rotterdam gezien waar ik echt van dacht WTF ?
Vaak loop ik ook even naar de leraar toe om even te melden dat dit echt niet kan en laat ik gelijk mijn code zien, die vaak ook dan er in word gezet.

Lumia 800 > 820 > 950 | Surface Pro 3 | Windows 10 Mobile Insider


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Heb een stukje copypasta C++ code van een maat van me dat niet echt te wauws is, maar ik post het niet want dat zou een beetje zielig zijn - hij probeert er iets van te leren.

Alhoewel ik hem zovaak verteld heb dat hij beter met een eenvoudigere taal kan beginnen, :+. Mijn argument: Java geeft een foutmelding, C++ crasht.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

YopY schreef op vrijdag 19 maart 2010 @ 11:38:
Heb een stukje copypasta C++ code van een maat van me dat niet echt te wauws is, maar ik post het niet want dat zou een beetje zielig zijn - hij probeert er iets van te leren.

Alhoewel ik hem zovaak verteld heb dat hij beter met een eenvoudigere taal kan beginnen, :+. Mijn argument: Java geeft een foutmelding, C++ crasht.
Laat hem gewoon assembly doen, dat is nog vele malen eenvoudiger :P

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

eensch, zo ben ik ook begonnen :Y)

Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 15-09 23:08
Verwijderd schreef op woensdag 17 maart 2010 @ 19:52:
Er wordt een $key verwacht, maar niet gegeven, dus hij doet het sowieso niet? Verder heb ik nog nooit een IP-adres gezien die SQL injecteert.. Maar goed, beter 1x te veel dan 1x te weinig. :9
Zal je net zien dat je PHP omgeving anders is dan apache, of dat er een vage bug in zit, waardoor er op een of andere manier een andere waarde gegeven kan worden in $_SERVER['REMOTE_ADDR'].
Dan maar een dbo::quote() voor deze zekerheid :)

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 15-09 23:08
YopY schreef op vrijdag 19 maart 2010 @ 11:38:
Heb een stukje copypasta C++ code van een maat van me dat niet echt te wauws is, maar ik post het niet want dat zou een beetje zielig zijn - hij probeert er iets van te leren.

Alhoewel ik hem zovaak verteld heb dat hij beter met een eenvoudigere taal kan beginnen, :+. Mijn argument: Java geeft een foutmelding, C++ crasht.
En vergeet netbeans IDE niet welke je comments uit andere classes weergeeft wanneer je methods aanroept van een object uit deze classe.
Afbeeldingslocatie: http://www.plaatjesupload.nl/bekijk/2010/03/19/1269010129-50.png
Zou mooi zijn als dit ook met C++ zou kunnen. Ik weet niet of het kan, maar zover ik weet niet.

Maak wel een topic erover trouwens :)
Ben wel benieuwd hoe anderen dat doen.

> Gamebuster in "C++ editor met "javadoc" popups"

[ Voor 18% gewijzigd door Gamebuster op 19-03-2010 17:54 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-09 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gamebuster schreef op vrijdag 19 maart 2010 @ 17:42:
Kan zoiets trouwens ook bij C++?
Natuurlijk kan dat ook bij C++. Die feature van netbeans is heus niet uniek hoor :)

[ Voor 13% gewijzigd door .oisyn op 19-03-2010 17:47 ]

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!

  • zezke
  • Registratie: September 2006
  • Laatst online: 19-09 14:09
Netbeans heeft zelf zelfs een C++ plugin...

Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
Kwam nog wat tegen in SDL:

C:
1
2
3
4
5
6
7
8
9
10
for ( ; ; ) {
  result = XGrabPointer(SDL_Display, SDL_Window, True, 0, GrabModeAsync, GrabModeAsync, SDL_Window, None, CurrentTime);
  if ( result == GrabSuccess ) {
    break;
  }
  SDL_Delay(100);
}
if ( result != GrabSuccess ) {
  /* Uh, oh, what do we do here? */ ;
}


Werkt toch niet zo geweldig in combinatie met unclutter.

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


Acties:
  • 0 Henk 'm!

  • Sc0tTy
  • Registratie: December 2003
  • Laatst online: 19-09 23:08
wat vinden jullie trouwens van het gebruik van out/ref in C# ? ik vind dit soms echt super handig, zodat je bijv niet altijd een exception hoeft te gooien.

Lumia 800 > 820 > 950 | Surface Pro 3 | Windows 10 Mobile Insider


Acties:
  • 0 Henk 'm!

Verwijderd

Sommige bedrijven zijn gewoon niet te snappen... Als je als bedrijf een stagair die net een beetje kan PHP'en een site laat maken, dan weet je dat dat niet veel goeds wordt. En als je diegene dan een opdracht geeft voor een bepaalde "Koninklijke Nederlandse ....", dan ben je echt niet goed bezig. :+

Dit kwam ik onder andere tegen:
PHP:
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
$table = $_GET['wijzigen'];
$sql = 'UPDATE '.$table.' SET ';
$i = 0;

$b = mysql_fetch_assoc($result);
foreach ($b as $a => $d)
{
    if (!empty($_GET[$a]))
    {
        if ($d == '')
        {
            if ($i > 0)
            {
                $sql .= ', ';
            }
            $sql .= $a.' = ""';
            $i++;
        }
    }
    else
    {
        if ($d != $_GET[$a])
        {
            if ($i > 0)
            {
                $sql .= ', ';
            }
            $sql .= $a.' = "'.$_GET[$a].'"';
            $i++;
        }
    }
}

Dit trouwens op een regeltje of 5. :9 Dat is lekker "klein en compact".. ;)

Iemand een suggestie? :+

edit: had wat verkeerd onthouden, nu "verbeterd" :9

[ Voor 7% gewijzigd door Verwijderd op 20-03-2010 17:08 ]


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 10:15
Ach, als onderbetaalde stagiaire is het soms ook wel verleidelijk om een stukje heerlijk onleesbare code ertussen te plempen, alhoewel dit gewoon onlogische mbo code is :+ .

Ook gevaarlijk voor injections, dat lijkt me nog het meest kwalijk.

Acties:
  • 0 Henk 'm!

Verwijderd

BarôZZa schreef op zaterdag 20 maart 2010 @ 04:51:
Ach, als onderbetaalde stagiaire is het soms ook wel verleidelijk om een stukje heerlijk onleesbare code ertussen te plempen, alhoewel dit gewoon onlogische mbo code is :+ .

Ook gevaarlijk voor injections, dat lijkt me nog het meest kwalijk.
Dit was de code voor zover ik hem kon herinneren, het was eerst nog helemaal ontcijferen, want het stond echt maar op een paar regels. :+ Maar goed, dit is niet een gevolg van het onderbetaalde gedeelte, maar gewoon gebrek aan kennis. :9 Een SQL injectie is altijd slecht, maar de query waar die in komt op zo'n geweldige manier opbouwen was ook wel even WTF momentje, moest gelijk aan dit topic denken. :D

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-09 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een suggestie voor wat? Wat het moet doen? Of wat het daadwerkelijk doet? Of heb jij het gewoon verkeerd overgenomen (en moet de ! op regel 8 weg)? ;)

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!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op zaterdag 20 maart 2010 @ 03:52:
Dit trouwens op een regeltje of 5. :9 Dat is lekker "klein en compact".. ;)
Ik zou dit ook veel compacter schrijven (qua aantal tekens, niet alleen qua aantal regels). Maar wat is het probleem?

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
BarôZZa schreef op zaterdag 20 maart 2010 @ 04:51:
Ach, als onderbetaalde stagiaire is het soms ook wel verleidelijk om een stukje heerlijk onleesbare code ertussen te plempen, alhoewel dit gewoon onlogische mbo code is :+ .

Ook gevaarlijk voor injections, dat lijkt me nog het meest kwalijk.
Bedankt voor het compliment dat je nu ook beweert dat mbo'ers niet kunnen 'scripten'/programmeren. Dat doet me veel deugd. :) (deugt)

@GuidoH: Bedrijven denken vaak: 'Als het werkt dan werkt het', het kan ze niet schelen hoe zoals je zelf wellicht ook wel weet. Verder wil ik wel eens weten hoe deze code dan daadwerkelijk zou moeten werken met een resultset. :)

[ Voor 1% gewijzigd door Manuel op 20-03-2010 15:10 . Reden: *Spellingprobleempje :+ ]


Acties:
  • 0 Henk 'm!

Verwijderd

Manuel schreef op zaterdag 20 maart 2010 @ 14:54:
[...]

Bedankt voor het compliment dat je nu ook beweert dat mbo'ers niet kunnen 'scripten'/programmeren. Dat doet me veel deugt. :)

@GuidoH: Bedrijven denken vaak: 'Als het werkt dan werkt het', het kan ze niet schelen hoe zoals je zelf wellicht ook wel weet. Verder wil ik wel eens weten hoe deze code dan daadwerkelijk zou moeten werken met een resultset. :)
offtopic:
Deugd :P


Ach, als het je gerust stelt, kan ik ook zeggen dat ik genoeg mensen op het WO ken, die na twee jaar nog steeds dingen in elkaar hacken in plaats van degelijk te programmeren, zodra ze de kans krijgen. Je opleiding zegt lang niet alles.

Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 18-09 16:37

mux

99% efficient!

Maar er is wel een verschil tussen weten hoe het moet, en echt helemaal geen flauw idee hebben. Case in point wat css-code van een bedrijf waar ik eerder heb gezeten die html-style comments in css gooide. Geen enkele browser behalve IE6 wist wat je met die css aan moest. Ik bedoel dus:

code:
1
2
3
4
5
<!-- dit is een html-comment in css -->
td:empty{
...
...
}


Speelt blijkbaar al tijden lang dat mensen in IE wel de bedrijfsopmaak zien, en in andere browsers niet... binnen 5 seconden gefikst door block comments te gebruiken (/* */)...

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Verwijderd schreef op zaterdag 20 maart 2010 @ 14:57:
[...]


offtopic:
Deugd :P


Ach, als het je gerust stelt, kan ik ook zeggen dat ik genoeg mensen op het WO ken, die na twee jaar nog steeds dingen in elkaar hacken in plaats van degelijk te programmeren, zodra ze de kans krijgen.
offtopic:
Me has weekend, dus even lekker verstand naar /dev/null gooien en lekker random typen :+


Maar nog steeds verbaast het me dat als mensen de kans krijgen om een goede opleiding te kunnen volgen maar dat ze die kans dan verspillen door te gaan zitten te gamen / weet ik wat. (Niet dat ontspanning slecht is maar soms toch even serieus zijn.)

Verder om toch nog even wat ontopic te gaan. Ik kreeg gister de vraag wat de fout was in zijn code en waarom PHP geen verbinding met MySQL wou maken.
PHP:
1
2
3
4
5
mysql_connect('localhost', 'user', 'pass');
mysql_db_connect('blaat'); //3x raden wat er fout is

$query = "SELECT * FROM test WAAR foo == 'bar';"; //Hoezo foute query?
echo mysql_query($query); //Ik krijg ook geen resultaat terug van PHP!! Wat een stomme rot taal is het ook


Zo kreeg ik de code gister te zien.. Iemand 1000 suggesties hoe dit beter kan? ;)

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Manuel schreef op zaterdag 20 maart 2010 @ 14:54:
@GuidoH: Bedrijven denken vaak: 'Als het werkt dan werkt het', het kan ze niet schelen hoe zoals je zelf wellicht ook wel weet. Verder wil ik wel eens weten hoe deze code dan daadwerkelijk zou moeten werken met een resultset. :)
De eerste query returned field names en old values. De update query update deze values als ze ongelijk zijn aan de oude values.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 08:21
Manuel schreef op zaterdag 20 maart 2010 @ 15:04:
[...]
PHP:
1
2
3
4
5
mysql_connect('localhost', 'user', 'pass');
mysql_db_connect('blaat'); //3x raden wat er fout is

$query = "SELECT * FROM test WAAR foo == 'bar';"; //Hoezo foute query?
echo mysql_query($query); //Ik krijg ook geen resultaat terug van PHP!! Wat een stomme rot taal is het ook


Zo kreeg ik de code gister te zien.. Iemand 1000 suggesties hoe dit beter kan? ;)
Ik had tegen de persoon in kwestie het volgende gezegd:

RTFM

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • vistu
  • Registratie: Januari 2007
  • Laatst online: 18-09 15:17
Manuel schreef op zaterdag 20 maart 2010 @ 15:04:
[...]

offtopic:
Me has weekend, dus even lekker verstand naar /dev/null gooien en lekker random typen :+


Maar nog steeds verbaast het me dat als mensen de kans krijgen om een goede opleiding te kunnen volgen maar dat ze die kans dan verspillen door te gaan zitten te gamen / weet ik wat. (Niet dat ontspanning slecht is maar soms toch even serieus zijn.)

Verder om toch nog even wat ontopic te gaan. Ik kreeg gister de vraag wat de fout was in zijn code en waarom PHP geen verbinding met MySQL wou maken.
PHP:
1
2
3
4
5
mysql_connect('localhost', 'user', 'pass');
mysql_db_connect('blaat'); //3x raden wat er fout is

$query = "SELECT * FROM test WAAR foo == 'bar';"; //Hoezo foute query?
echo mysql_query($query); //Ik krijg ook geen resultaat terug van PHP!! Wat een stomme rot taal is het ook


Zo kreeg ik de code gister te zien.. Iemand 1000 suggesties hoe dit beter kan? ;)
Een beginner hoop ik? Op de db_connect ipv db_select, de foute query, en het niet daadwerkelijk returnen van de query results na, valt het toch best mee >:)

Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op zaterdag 20 maart 2010 @ 12:10:
[...]

Een suggestie voor wat? Wat het moet doen? Of wat het daadwerkelijk doet? Of heb jij het gewoon verkeerd overgenomen (en moet de ! op regel 8 weg)? ;)
Had het inderdaad verkeerd overgenomen, de ! moest een = zijn. :+ Maar was meer de vraag of iemand zo zag hoe dit zo'n 10x kleiner kan. :9
Olaf van der Spek schreef op zaterdag 20 maart 2010 @ 14:21:
[...]

Ik zou dit ook veel compacter schrijven (qua aantal tekens, niet alleen qua aantal regels). Maar wat is het probleem?
Vraag je nou echt wat het probleem is aan die code? :+ Maar goed, inderdaad kan het een stuk compacter, maar dat bereik je niet door de enters en tabs weg te halen.
Manuel schreef op zaterdag 20 maart 2010 @ 14:54:
[...]

Bedankt voor het compliment dat je nu ook beweert dat mbo'ers niet kunnen 'scripten'/programmeren. Dat doet me veel deugd. :) (deugt)

@GuidoH: Bedrijven denken vaak: 'Als het werkt dan werkt het', het kan ze niet schelen hoe zoals je zelf wellicht ook wel weet. Verder wil ik wel eens weten hoe deze code dan daadwerkelijk zou moeten werken met een resultset. :)
Denk niet dat hij bedoelde dat elke MBO'er niet kan PHP'en, maar het niveau PHP dat ze op MBO-scholen geven is zover ik weet niet bepaald hoog te noemen. Al zijn ze op mijn oude school bezig met het invoeren van een Zend traject.. :9 Denk dat er weinig mensen zijn die in 6 weken ZCE gaan worden. :+

En dat bedrijven denken "als het maar werkt" ken ik maar al te goed, is niet leuk werken voor zo'n bedrijf als je leuke opdrachten krijgt, maar dat vervolgens in elkaar moet 'hacken' omdat het anders te duur wordt.. :/

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Verwijderd schreef op zaterdag 20 maart 2010 @ 17:23:
[...]


Denk niet dat hij bedoelde dat elke MBO'er niet kan PHP'en, maar het niveau PHP dat ze op MBO-scholen geven is zover ik weet niet bepaald hoog te noemen. Al zijn ze op mijn oude school bezig met het invoeren van een Zend traject.. :9 Denk dat er weinig mensen zijn die in 6 weken ZCE gaan worden. :+

En dat bedrijven denken "als het maar werkt" ken ik maar al te goed, is niet leuk werken voor zo'n bedrijf als je leuke opdrachten krijgt, maar dat vervolgens in elkaar moet 'hacken' omdat het anders te duur wordt.. :/
Sommige leerlingen steken er zelf jammer genoeg geen tijd meer in en zijn daardoor totaal afhankelijk van de leerkracht die ze op dat moment hebben. Zo krijgen de mensen op onze school in leerjaar 2,3,4 'uitgebreid' PHP (wat een grap). En dan maakt de leerkracht ook nog fouten van dat die .html er achter zet en geen .php en dan moet dat een docent voorstellen.

Het lijkt mij verder ook wel leuk om eens naar het ZF te gaan kijken, lees er steeds meer over maar heb alleen nog net niet de tijd om er leuk mee te gaan zitten te klooien.
vistu schreef op zaterdag 20 maart 2010 @ 15:47:
[...]


Een beginner hoop ik? Op de db_connect ipv db_select, de foute query, en het niet daadwerkelijk returnen van de query results na, valt het toch best mee >:)
Jammer genoeg niet. Als ik je zeg dat die al meer dan 3 jaar ervaring heeft dan zou je zeggen waar hij zijn verstand al die tijd heeft gelaten.
Webgnome schreef op zaterdag 20 maart 2010 @ 15:42:
[...]


Ik had tegen de persoon in kwestie het volgende gezegd:

RTFM
Nog even en ik laat een officiele naamswijziging doorvoeren. Manuel en Manual lijken namelijk nog al veel op elkaar. Heb een naam nodig die niet lijkt / associeert met Manual :P Maar zoals je wel kunt begrijpen heb ik ook tegen dat persoon gezegd dat die het zelf maar kan zitten op te lossen. Het is allemaal uit vrije wil en als diegene te lui is om er moeite voor te doen gaat die wat mij betreft even naar prioriteit -x

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op zaterdag 20 maart 2010 @ 17:23:
Had het inderdaad verkeerd overgenomen, de ! moest een = zijn. :+ Maar was meer de vraag of iemand zo zag hoe dit zo'n 10x kleiner kan. :9
Dat is toch niet zo moeilijk?
Vraag je nou echt wat het probleem is aan die code? :+ Maar goed, inderdaad kan het een stuk compacter, maar dat bereik je niet door de enters en tabs weg te halen.
Ja. De SQL injectie en het kunnen updaten van elk veld zijn niet erg handig natuurlijk, maar weet niet of je daar op doelde. SQL injectie in PHP is zo gewoontjes.

[ Voor 3% gewijzigd door Olaf van der Spek op 20-03-2010 18:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Manuel schreef op zaterdag 20 maart 2010 @ 18:26:
[...]

Sommige leerlingen steken er zelf jammer genoeg geen tijd meer in en zijn daardoor totaal afhankelijk van de leerkracht die ze op dat moment hebben. Zo krijgen de mensen op onze school in leerjaar 2,3,4 'uitgebreid' PHP (wat een grap). En dan maakt de leerkracht ook nog fouten van dat die .html er achter zet en geen .php en dan moet dat een docent voorstellen.

Het lijkt mij verder ook wel leuk om eens naar het ZF te gaan kijken, lees er steeds meer over maar heb alleen nog net niet de tijd om er leuk mee te gaan zitten te klooien.
Je kan als leerling al je tijd er in steken, maar op het moment dat de lesstof van zo'n laag niveau is, dan heb je er niks aan om die tijd er in te steken. :) Ik doelde met "Zend" niet op het Zend Framework maar op de zend Certificering. ;)

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Verwijderd schreef op zaterdag 20 maart 2010 @ 18:53:
[...]

Je kan als leerling al je tijd er in steken, maar op het moment dat de lesstof van zo'n laag niveau is, dan heb je er niks aan om die tijd er in te steken. :) Ik doelde met "Zend" niet op het Zend Framework maar op de zend Certificering. ;)
Heb je deels gelijk in, tenzij de leerling als nog besluit er zelf iets mee te doen. Dan ben je gelukkig niet meer van een school afhankelijk maar eerder van waar kan ik het papiertje als nog halen.

En my bad, dacht dat je het over ZF had en niet over ZCE. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Manuel schreef op zondag 21 maart 2010 @ 04:30:
[...]

Heb je deels gelijk in, tenzij de leerling als nog besluit er zelf iets mee te doen. Dan ben je gelukkig niet meer van een school afhankelijk maar eerder van waar kan ik het papiertje als nog halen.

En my bad, dacht dat je het over ZF had en niet over ZCE. :)
Dan kan je het net zo goed helemaal buiten school om doen. :Y Heb ik destijds ook gedaan, de dag dat we op school begonnen met PHP had ik m'n ZCE gehaald, en ik kreeg niet eens vrijstelling. :9

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 08:21
Verwijderd schreef op zondag 21 maart 2010 @ 08:38:
[...]

Dan kan je het net zo goed helemaal buiten school om doen. :Y Heb ik destijds ook gedaan, de dag dat we op school begonnen met PHP had ik m'n ZCE gehaald, en ik kreeg niet eens vrijstelling. :9
Maar de meeste leerlingen (including me) gaan toch vaak via de school omdat men nog niet precies weet wat men kan halen en waar het voor staat. Een mbo / hbo / wo diploma zegt voor de gemiddelde in eerste instantie een stuk meer. Het is deels aan de school om toe te zien dat leerlingen ook doen wat ze moeten doen en niet een beetje lopen lanterfanten maar ja... ik denk dat als er een discussie komt over het schoolsysteem dit beter in een nieuw topic gezet kan worden.

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 21 maart 2010 @ 08:38:

Dan kan je het net zo goed helemaal buiten school om doen. :Y Heb ik destijds ook gedaan, de dag dat we op school begonnen met PHP had ik m'n ZCE gehaald, en ik kreeg niet eens vrijstelling. :9
Ik denk dat je wel een iets te hoge pet op hebt van ZCE. Toevallig heb ik dat certificaat ook eens gehaald, overigens alleen omdat het echt een kwestie was van "even ophalen". Het was helemaal niet te garanderen dat iemand die het haalde ook echt kon programmeren. Het was meer een kwestie van "hoe goed ken je de manual".

Als ik kijk naar bijvoorbeeld RHCE certificering, dan is dat meer het aantonen dat je niet alleen kennis hebt, maar dat je die ook juist kunt toepassenn. Dat zouden ze bij ZCE ook kunnen doen. Gewoon opdrachten geven om iets met PHP te maken, binnen een paar uur. En dan zorgen dat die opdrachten te complex zijn voor een hobby-prutser.

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Verwijderd schreef op zaterdag 20 maart 2010 @ 18:53:
[...]

Je kan als leerling al je tijd er in steken, maar op het moment dat de lesstof van zo'n laag niveau is, dan heb je er niks aan om die tijd er in te steken. :) Ik doelde met "Zend" niet op het Zend Framework maar op de zend Certificering. ;)
Net alsof je jezelf niet kunt laten certificeren voor Zend Framework... Dacht 't wel:

http://www.zend.com/services/certification/framework/

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
vistu schreef op zaterdag 20 maart 2010 @ 15:47:
[...]


Een beginner hoop ik? Op de db_connect ipv db_select, de foute query, en het niet daadwerkelijk returnen van de query results na, valt het toch best mee >:)
Het is sowieso slecht programeerwerk om elke keer mysql_query aan te roepen.

Je bouwt toch gewoon een library voor de betreffende database en zegt dan: sql_query($query) of zo?

Stel je voor dat je eens van database verandert.

En over out/ref in C#. Ik gebruik ref vaak als er geen kopie van een variabele gemaakt moet worden.
Zo heb ik met LINQ to SQL een datacontext van mijn database die in verschillende forms aangepast kan worden (gebruikers aanmaken, menu-items aanmaken etc..) en die geef ik dan elke keer als ref mee.

Ook heb ik er een gewoonte van gemaakt om het aanroepen van Forms in using te zetten, zodat hij ze altijd goed kan disposen, iemand een idee of dit goed is?

Daarbij geef ik bij ShowDialog en MessageBox.Show altijd this mee als parent om er zeker van te zijn dat hij goed wordt gezet.

Bijvoorbeeld:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void ShowUserForm()
{
  using(UserForm userForm = new UserForm(ref this.dataContext))
  {
    userForm.ShowDialog(this); 
  }
}

En dan de klasse UserForm:
partial class UserForm : Form
{
  private DataContext dataContext;

  public UserForm(ref DataContext dataContext)
  {
    InitializeComponent(); // Standaardmethode
    this.dataContext = dataContext;
  }
}

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 11:10

Haan

dotnetter

Nu kan het aan mij liggen, maar worden non-value types niet sowieso bij reference doorgegeven? Volgens mij is die ref dus helemaal niet nodig.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Haan schreef op zondag 21 maart 2010 @ 12:16:
Nu kan het aan mij liggen, maar worden non-value types niet sowieso bij reference doorgegeven? Volgens mij is die ref dus helemaal niet nodig.
Als je ref gebruikt moet de variabele minstens geïnstantieerd zijn. Als dat echter niet uitmaakt (bijvoorbeeld omdat je toch een == null check doet, dan is het inderdaad niet nodig om ref te gebruiken bij non-value types.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Haan schreef op zondag 21 maart 2010 @ 12:16:
Nu kan het aan mij liggen, maar worden non-value types niet sowieso bij reference doorgegeven? Volgens mij is die ref dus helemaal niet nodig.
Volgens mij hebben refs inderdaad alleen nut bij structs en value types. En het is een handige manier om de garbage collector wat minder werk te geven. (De garbage collector van het .net framework op windows is erg goed, maar de GC van het compace .net framework wat op de xbox en de windows phone draait heeft maar 1 generatie geloof ik, dus dan is het heel erg belangrijk om veel te reffen :).

Verder is out natuurlijk heerlijk, hoef je niet zo stom als in java duizend return structs te maken.

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

Verwijderd

iH8 schreef op zondag 21 maart 2010 @ 11:31:
[...]


Net alsof je jezelf niet kunt laten certificeren voor Zend Framework... Dacht 't wel:

http://www.zend.com/services/certification/framework/
Weet ik, maar daar had ik het niet over. :9

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Haan schreef op zondag 21 maart 2010 @ 12:16:
Nu kan het aan mij liggen, maar worden non-value types niet sowieso bij reference doorgegeven? Volgens mij is die ref dus helemaal niet nodig.
Values die een non-value type i.e. reference type hebben, worden standaard ook gewoon by value doorgegeven. De reference (niet het object waarnaar verwezen wordt) wordt gekopieerd.
roy-t schreef op zondag 21 maart 2010 @ 12:33:
Verder is out natuurlijk heerlijk, hoef je niet zo stom als in java duizend return structs te maken.
IMO meer een hack voor het missen van tupels. :p

[ Voor 22% gewijzigd door RayNbow op 21-03-2010 17:17 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
Veel Java OSS-projecten die ik heb gezien hebben deze klasse:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class tupel<A,B> {
  A first;
  B second;
  tupel(A first, B second) {
    this.first = first;
    this.second = second;
  }
  A getFirst() {
   return first;
  }
  B getSecond() {
   return second;
  }
}

Syntax van types is misschien verkeerd, geen zin om dat op te zoeken.
Jammer dat dat niet in de java library zit, maar ik heb hem net in 1 minuut getypt.

En ook in Java kan je out-vars hebben, als het maar geen value-types of immutables zijn. Denk aan StringBuilder, die wordt daarvoor vrij vaak gebruikt.

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

tuple :) (hoewel dit specifieker een ordered pair is)

[ Voor 14% gewijzigd door Zoijar op 21-03-2010 17:43 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op zondag 21 maart 2010 @ 17:35:
Veel Java OSS-projecten die ik heb gezien hebben deze klasse:
Java:
1
/* snip */

Syntax van types is misschien verkeerd, geen zin om dat op te zoeken.
Jammer dat dat niet in de java library zit, maar ik heb hem net in 1 minuut getypt.
En nu 3-tupels, 4-tupels, 5-tupels...? :p
En ook in Java kan je out-vars hebben, als het maar geen value-types of immutables zijn. Denk aan StringBuilder, die wordt daarvoor vrij vaak gebruikt.
Uh, weet je zeker wat out-vars inhouden?

C#:
1
2
3
4
5
6
7
8
9
10
11
12
static void outexample(out StringBuilder x)
{
    x = new StringBuilder("foo");
}

static void Main(string[] args)
{
    StringBuilder sb;
    outexample(out sb);
    Console.WriteLine(sb);
    Console.ReadKey();
}

Bovenstaande code lukt je niet in Java. De inhoud van de variabele sb in Main kan in Java niet worden aangepast.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
RayNbow schreef op zondag 21 maart 2010 @ 17:16:
[...]

Values die een non-value type i.e. reference type hebben, worden standaard ook gewoon by value doorgegeven. De reference (niet het object waarnaar verwezen wordt) wordt gekopieerd.

[...]

IMO meer een hack voor het missen van tupels. :p
Maar neem nu dit voorbeeld:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Circle c = new Circle(5); // Laten we stellen dat 5 de radius is

Methode 1: SetRadius(ref c);
Methode 2: SetRadius(c);

MessageBox.Show(c.Radius.ToString());

// Volgens mij komt hier bij methode 1 10 uit, maar bij methode 2 gewoon 5.
// Dan heeft het toch wel zin om objecten met óf zonder ref door te geven en is het niet alleen optioneel?

private void SetRadius(Circle c)
{
  c.Radius = 10;
}

private void SetRadius(ref Circle c)
{
  c.Radius = 10;
}

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Davio schreef op zondag 21 maart 2010 @ 18:05:
[...]

Maar neem nu dit voorbeeld:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Circle c = new Circle(5); // Laten we stellen dat 5 de radius is

Methode 1: SetRadius(ref c);
Methode 2: SetRadius(c);

MessageBox.Show(c.Radius.ToString());

// Volgens mij komt hier bij methode 1 10 uit, maar bij methode 2 gewoon 5.
// Dan heeft het toch wel zin om objecten met óf zonder ref door te geven en is het niet alleen optioneel?

private void SetRadius(Circle c)
{
  c.Radius = 10;
}

private void SetRadius(ref Circle c)
{
  c.Radius = 10;
}
In beide gevallen wordt het getal 10 weergegeven. Bij methode 2 (dus zonder ref) wordt de referentie gekopieerd. Echter, binnen SetRadius kan je met die referentie bij het daadwerkelijke object komen en de inhoud van het object aanpassen.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

Verwijderd

RayNbow schreef op zondag 21 maart 2010 @ 18:15:
[...]

In beide gevallen wordt het getal 10 weergegeven. Bij methode 2 (dus zonder ref) wordt de referentie gekopieerd. Echter, binnen SetRadius kan je met die referentie bij het daadwerkelijke object komen en de inhoud van het object aanpassen.
het ligt er puur aan wat van object je mee geeft een struct bv is een value type en een class is een reference
voor een class hoef je nooit een reference mee te geven (behalve bij compact framework) en bij een struct altijd zie onder staand voorbeeldje


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
        class blaat
        {
        public int x;
        }

        struct bla
        {
            public int x;
        }
        
        private void Test(blaat x)
        {
            x.x += x.x;
        }

        private void Test(bla x)
        {
            x.x += x.x;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            blaat blaaat = new blaat();
            bla blaa = new bla();
            blaaat.x = 1;
            blaa.x = 1;
            Test(blaaat);
            Test(blaa);
                        
            MessageBox.Show(blaaat.x.ToString());  //word dus 2
            MessageBox.Show(blaa.x.ToString());   //blijft 1
        }

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Verwijderd schreef op zondag 21 maart 2010 @ 18:20:
het ligt er puur aan wat van object je mee geeft een struct bv is een value type en een class is een reference
Ik heb het in m'n reacties over referentietypes? :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

Verwijderd

RayNbow schreef op zondag 21 maart 2010 @ 18:24:
[...]

Ik heb het in m'n reacties over referentietypes? :p
uhm ja het de verkeerde geqoute. moest de post er voor zijn idd

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
RayNbow schreef op zondag 21 maart 2010 @ 17:44:
[...]

En nu 3-tupels, 4-tupels, 5-tupels...? :p
What's the issue?
Java:
1
myTupel = new tupel<tupel<A,B>,C>(a,b,c);

:+
[...]

Uh, weet je zeker wat out-vars inhouden?
Ja, dat weet ik. Je moet dus in de caller al een lege StringBuilder (of buffer) aanmaken en meegeven, die kan je dan vullen. Zolang je 'new' vermijdt werkt het vergelijkbaar :) Heel leuk in een visitor :Y)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 21 maart 2010 @ 11:22:
[...]

Ik denk dat je wel een iets te hoge pet op hebt van ZCE. Toevallig heb ik dat certificaat ook eens gehaald, overigens alleen omdat het echt een kwestie was van "even ophalen". Het was helemaal niet te garanderen dat iemand die het haalde ook echt kon programmeren. Het was meer een kwestie van "hoe goed ken je de manual".

Als ik kijk naar bijvoorbeeld RHCE certificering, dan is dat meer het aantonen dat je niet alleen kennis hebt, maar dat je die ook juist kunt toepassenn. Dat zouden ze bij ZCE ook kunnen doen. Gewoon opdrachten geven om iets met PHP te maken, binnen een paar uur. En dan zorgen dat die opdrachten te complex zijn voor een hobby-prutser.
Nou nee, de certificering was inderdaad vrij makkelijk te halen, maar ik had toen ik hem haalde al een paar jaar ervaring met PHP. Een beginner die net 6 weken bezig is met PHP redt dat echt nooit.. Ik heb destijds het boek in een avondje doorgelezen en daarna heb ik hem gehaald zonder al te veel moeite. ;)

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op zondag 21 maart 2010 @ 21:25:
[...]

What's the issue?
Java:
1
myTupel = new tupel<tupel<A,B>,C>(a,b,c);

:+
De issue is natuurlijk dat het minder aantrekkelijk wordt om het te gebruiken. ;)
Daarnaast, hoe wil je die 3-ary constructor implementeren? :p
[...]

Ja, dat weet ik. Je moet dus in de caller al een lege StringBuilder (of buffer) aanmaken en meegeven, die kan je dan vullen. Zolang je 'new' vermijdt werkt het vergelijkbaar :) Heel leuk in een visitor :Y)
Maar dat zijn dus gevallen die in C# met byval ook gewoon werken en waarbij byref niet nodig (sterker nog, overbodig) is.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void swap<T>(ref T x, ref T y)
{
    T tmp = x;
    x = y;
    y = tmp;
}

static void Main(string[] args)
{
    var a = "Hello";
    var b = "World";
    swap(ref a, ref b);
    Console.WriteLine(a);
    Console.WriteLine(b);
    Console.ReadKey();
}

Hier maak ik geen gebruik new, maar is alsnog niet "implementeerbaar" in Java. Je moet door wat hoepels heen springen om het gewenste effect te krijgen, namelijk door de extra indirectie expliciet te maken:
Java:
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
public class Ref<T> {
    public T value;
    
    public Ref(T value) {
        this.value = value;
    }
    
    @Override
    public String toString() {
        return value.toString();
    }
}

public class RefTest {
    public static void main(String[] args) {
        Ref<String> a = makeRef("Hello"),
                    b = makeRef("World");
        swap(a, b);
        System.out.println(a);
        System.out.println(b);
    }
    
    static <T> void swap(Ref<T> x, Ref<T> y) {
        T tmp = x.value;
        x.value = y.value;
        y.value = tmp;
    }
    
    static <T> Ref<T> makeRef(T value) {
        return new Ref<T>(value);
    }
}

Maar goed, byref heb je zelden nodig. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
roy-t schreef op zondag 21 maart 2010 @ 12:33:
[...]
En het is een handige manier om de garbage collector wat minder werk te geven. (De garbage collector van het .net framework op windows is erg goed, maar de GC van het compace .net framework wat op de xbox en de windows phone draait heeft maar 1 generatie geloof ik, dus dan is het heel erg belangrijk om veel te reffen :).
Hoe heeft het "reffen" iets te maken met werk uit handen nemen van de garbage collector? Je geeft non-value types altijd by-ref door. Ik zie niet in hoe de verwijzing by reference doorgeven het makkelijker maakt voor de GC aangezien het alleen maar een extra indirectie is.

Verder probeer ik ref en out zo min mogelijk te gebruiken, en zou een tuple constructie IMHO de voorkeur hebben.

[ Voor 3% gewijzigd door Woy op 21-03-2010 22:38 ]

“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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:39
RayNbow schreef op zondag 21 maart 2010 @ 22:16:
[...]

Daarnaast, hoe wil je die 3-ary constructor implementeren? :p
Java:
1
2
3
4
5
6
class tupel<A,B> {
  tupel(object a, object b, B c) {
    this.first = new tupel<?,?>(a,b);
    this.second = c;
  }
}

O-)
spoiler:
dit is per slot van rekening het slechte programmeervoorbeelden-topic, en als je me een hamer geeft... >:)
Maar dat zijn dus gevallen die in C# met byval ook gewoon werken en waarbij byref niet nodig (sterker nog, overbodig) is.
Volgens mij begon ik met te zeggen dat je het meestal zo kan oplossen in Java, a.k.a. workaround ;)
C#:
1
//snip

Hier maak ik geen gebruik new, maar is alsnog niet "implementeerbaar" in Java. Je moet door wat hoepels heen springen om het gewenste effect te krijgen, namelijk door de extra indirectie expliciet te maken:
Java:
1
//snip
Leg uit, waarom zou je dat willen doen :? In de meeste gangbare cases kan je met een default wrapper-klasse bereiken wat je wilt. Het leuke aan een out-argument is dat je direct aan de syntax ziet wat de bedoeling ervan is. In C# zou ik dus bij een StringBuilder die als return wordt gebruikt het out-keyword neerzetten, ook al voegt dat niet direct iets toe.

[ Voor 4% gewijzigd door MBV op 21-03-2010 23:23 ]


Acties:
  • 0 Henk 'm!

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Woy schreef op zondag 21 maart 2010 @ 22:37:
[...]

Hoe heeft het "reffen" iets te maken met werk uit handen nemen van de garbage collector? Je geeft non-value types altijd by-ref door. Ik zie niet in hoe de verwijzing by reference doorgeven het makkelijker maakt voor de GC aangezien het alleen maar een extra indirectie is.

Verder probeer ik ref en out zo min mogelijk te gebruiken, en zou een tuple constructie IMHO de voorkeur hebben.
Toch is het gebruik van refs aan te raden in sommige gevallen. Bijvoorbeeld als je een struct die als Vector klasse dient implementeert. Het gebruik van operators op een vector (float X, Y en Z) zorgt ervoor dat objecten gekopieerd worden (struct = value-type). c = a + b is dus trager dan Add(ref a,ref b,out c).

[ Voor 18% gewijzigd door Mischa_NL op 22-03-2010 01:54 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op zondag 21 maart 2010 @ 23:22:
[...]

Volgens mij begon ik met te zeggen dat je het meestal zo kan oplossen in Java, a.k.a. workaround ;)
Misinterpretatie aan mijn kant.
[...]

Leg uit, waarom zou je dat willen doen :?
Dit was een ref voorbeeld waarbij er geen sprake was van new() in de C# code en jouw workaround niet werkt. Ik zie nu echter dat ik zelf over het hoofd zag dat we het over out hadden en niet over ref. :p
In de meeste gangbare cases kan je met een default wrapper-klasse bereiken wat je wilt.
Kwestie van mijn bovenstaande Ref<T> class hernoemen naar Out<T>? :p
Het leuke aan een out-argument is dat je direct aan de syntax ziet wat de bedoeling ervan is. In C# zou ik dus bij een StringBuilder die als return wordt gebruikt het out-keyword neerzetten, ook al voegt dat niet direct iets toe.
Dat zou ik zelf niet doen. Ik zou alleen out gebruiken bij een argument als de doorgegeven variabele daadwerkelijk naar een ander object zal verwijzen. Als je out ook plaatst bij elk argument waarvan het gerefereerde object door de methode wordt veranderd, dan kun je niet meer aflezen aan out of de doorgegeven variabele van inhoud verandert, of dat slechts het gerefereerde object eventueel verandert.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Woy schreef op zondag 21 maart 2010 @ 22:37:
[...]

Hoe heeft het "reffen" iets te maken met werk uit handen nemen van de garbage collector? Je geeft non-value types altijd by-ref door. Ik zie niet in hoe de verwijzing by reference doorgeven het makkelijker maakt voor de GC aangezien het alleen maar een extra indirectie is.

Verder probeer ik ref en out zo min mogelijk te gebruiken, en zou een tuple constructie IMHO de voorkeur hebben.
Dat ging juist over value types :). En je helpt de GC door niet meerdere instanties van value types te krijgen met ref :).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
MBV schreef op zondag 21 maart 2010 @ 17:35:
Veel Java OSS-projecten die ik heb gezien hebben deze klasse:
Java:
1
class tupel<A,B> {/*enzovoorts*/}

Syntax van types is misschien verkeerd, geen zin om dat op te zoeken.
Jammer dat dat niet in de java library zit, maar ik heb hem net in 1 minuut getypt.
Bedoel je deze, die niet in de Java library zit?

Java:
1
2
3
public static class AbstractMap.SimpleEntry<K,V>
extends Object
implements Map.Entry<K,V>, Serializable


of kijk ik verkeerd?

Computer Science: describing our world with boxes and arrows.


Acties:
  • 0 Henk 'm!

Verwijderd

Tupels kunnen uiteraard hun voordeel hebben alleen is de keuze voor een concrete class vaak duidelijker. Je kunt dan immers betekenis geven aan de waardes:
code:
1
2
3
4
5
6
7
tuple<String, Integer, Integer> result...
//versus
Result {
  String getMessage();
  Integer getFailureCount();
  ...
}

Kleine moeite groot gebaar zeg maar. Maak je het leven van je collega's weer een stukje makkelijker. :)

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 19-09 15:19
Ik kwam een stukje oude PHP code van mij tegen (Denk zo'n 5 a 6 jaar oud). Ik vond toen toch iets héél erg slecht/doms wat met een simpele JOIN beter had kunnen zijn. Ik moest er wel om lachen.

PHP:
1
2
3
4
5
6
while ( $fetchcats = mysql_fetch_assoc ( $catquery ) ) {
     echo $fetchcats['catname'];
     while ($fetchtopics = mysql_fetch_assoc ( $topicquery ) ) {
          echo $fetchtopics['topicname'];
     }
}


pseudachtige code.

Waren dus twee selects, waarvan de query in de while loop stond (En hij dus steeds een topic uit die cat ging selecteren).
Pagina: 1 ... 22 ... 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. :)