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

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik was pas wat aan het lezen over hoe sessies in PHP ook alweer precies werken (met name het moment van aanmaken van het sessiebestand, bij session_start() of pas bij het schrijven naar $_SESSION? Bij het eerste, blijkbaar).

Daarbij kwam ik de volgende aangedragen juweeltjes tegen:
I had a problem with the session_start(); like this: "Warning: session_start(); [function.session-start]: Cannot send session cache limiter - headers already sent".

This is my php code:

PHP:
1
2
3
4
5
6
session_start();

if ($_SESSION['nome'] == ""){
die('Você não pode acessar essa pagina!');
} else {
}


The problem is the "" that we need to chango to ''.

Correct code:

PHP:
1
2
3
4
5
6
session_start();

if ($_SESSION['nome'] == ''){
die('Você não pode acessar essa pagina!');
} else {
}
Want het maakt natuurlijk helemaal niet uit dat je een niet-bestaande index probeert te bereiken, die de Notice: Undefined index: nome uitpoept, zodat de cookies niet meer verstuurd kunnen worden.

Ik durf te wedden dat 'ie in de tussentijd gewoon wat heeft lopen rommelen met die $_SESSION['nome'] en er wél een waarde in heeft gezet, en vervolgens met de moed der wanhoop z'n enkele quotes vervangen door dubbele waarna het plotseling werkte, doordat de notice verdween en dus de sessie-cookie-header wel weggeschreven kon worden.

Of deze dan:
Persistence of session data in included file also has one more aspects if you are including a file using/over the http connection.
Session will not be available without refresh (it's a separate thread even if you are on the same domain/server), which is again a correct behavior, but if you are including a file from local file system then it should have session data if you are setting and accessing the $_SESSION variable even before page refresh because it is available globally.

PHP:
1
2
3
4
session_start(); 
$_SESSION['example']="yes"; 

Include("otherfile");


Session variable will be available in included file.

PHP:
1
2
3
4
session_start(); 
$_SESSION['example']="yes"; 

Include("http://domain.com/otherfile.php");


Session will NOT be available in other file.
BUt if both files are on same server then after refresh values will be available.
Gewoon totaal niet snappen dat je met het includen van een PHP-script over een URL juist de uitvoer van dat script insluit, wat ook gewoon in de handleiding staat:
(Over "URL fopen wrappers"): This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.
En het pas beschikbaar zijn van de sessiedata na een refresh als de scripts wel op dezelfde server draaien, bijvoorbeeld include('http://localhost/foobar.php'), toeschrijven aan het uitgevoerd worden door verschillende threads.

Nee, want die zouden hetzelfde sessiebestand lezen en daar ook op locken gedurende het hele request, en dus over dezelfde sessiedata beschikken. De URL-wrapper die het tweede script opent doet echter simpelweg niet aan cookies, dus krijgt een eigen sessie. Vervolgens is de sessiedata uit de include dus gewoon verloren (de volgende include genereert immers net zo goed weer een nieuwe sessie), dus z'n statement over de refresh slaat ook op kaas.

Volgens mij kunnen ze gewoon beter die hele comments-sectie verwijderen van de manual-pages. Hoewel, af en toe is het prima vermaak. 8)7

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • HeSitated
  • Registratie: April 2009
  • Laatst online: 03-12-2024
Vandaag Oracle Database 10g Express Edition geprobeerd te installeren met een oudere versie.

Krijg ik de volgende foutmelding:
Afbeeldingslocatie: http://i1270.photobucket.com/albums/jj620/Oooooooooooohps/OracleErrorMessage.gif

:F

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Pop quiz: wat is de goede sorteervolgorde van baa - báb - bac - bba?

spoiler:
Dat hangt er vanaf! De correcte sorteervolgorde in het Nederlands is baa - báb - bac - bba, maar die in het IJslands is baa - bac - báb - bba!


Vraag het je favoriete programmeertaal ook 'ns. Als je het naïef in Python doet dan doe je bijvoorbeeld:
code:
1
2
>>> print ' '.join(sorted([u"baa", u"báb", u"bac", u"bba"]))
baa bac bba báb


en dat is dus níet goed. OK, wat doe je dan? Je zou, bijvoorbeeld, je in kunnen lezen over collations, de ICU-library kunnen installeren en vervolgens dit doen:

code:
1
2
>>> print ' '.join(sorted([u"baa", u"báb", u"bac", u"bba"],  cmp=icu.Collator.createInstance(icu.Locale('is_IS')).compare))
baa bac báb bba


Maar waarom zou je dat doen als je ook dit kunt doen (let overigens ook op de functionele scheiding, en noteer het aantal verschillende dingen dat deze functie doet - vooral de dingen die niet uit de naam blijken):
quote: (quote want niet-europese tekens die niet werken in code-blokken)
def icelandic_sort(categorylist):
    finallradeh,s_radeh=[],[]
    alphabets=u' 0123456789aábcdðeéfghiíjklmnoópqrstuúvwxyzþæö' #Space is first then numbers and then correct Alphabet letter and after all of letters is ZWNJ 
    for radeh in categorylist:
            radeh=radeh.replace(u'[[category:',u'').replace(u']]',u'')
            coderadeh=radeh
            for i in range(0,len(alphabets)):
                alphabet=alphabets[i]
                if i<10:
                    j='0'+str(i)
                else:
                    j=str(i)
                coderadeh=coderadeh.replace(alphabet,j)
            s_radeh.append(coderadeh+u'0000000000000000000@@@@'+radeh)
    s_radeh=list(set(s_radeh))
    sortedradeh=sorted(s_radeh)
    for radeh in sortedradeh:
        radeh=u'[[category:'+radeh.split(u'@@@@')[1]+u']]'
        finallradeh.append(radeh)
    return finallradeh
(aangepast van een Perzisch origineel, maar ik dacht dat jullie iets europesere letters zouden kunnen waarderen)

Scheelt toch maar weer een library installeren.

[ Voor 3% gewijzigd door ValHallASW op 11-05-2012 22:17 ]


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
ValHallASW schreef op vrijdag 11 mei 2012 @ 22:13:
Pop quiz: wat is de goede sorteervolgorde van baa - báb - bac - bba?
Dit soort vragen kun je ook stellen voor diverse String-manipulaties zoals toUpperCase(...) en toLowerCase().

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Herko_ter_Horst schreef op vrijdag 11 mei 2012 @ 22:27:
Dit soort vragen kun je ook stellen voor diverse String-manipulaties zoals toUpperCase(...) en toLowerCase().
http://www.moserware.com/...ode-pass-turkey-test.html ;-)

Ook nog eentje om over na te denken als je met niet-ascii-meuk werkt:

code:
1
2
3
4
5
6
>>> u'ä' == u'ä'
False
>>> u'ä'
u'\xe4'
>>> u'ä'
u'a\u0308'


code:
1
2
3
>>> import unicodedata
>>> unicodedata.normalize("NFC", u"\xe4") == unicodedata.normalize("NFC", u"a\u0308")
True


Die moet ik nog altijd een keertje gaan toepassen op gebruikersnaamveldjes ;-)

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
function index()
{
    if ($this->ion_auto->logged_in() || 2+2==4)
    {
        $this->load->view('upload');
    }

    ... snip ...
}


Bron

[ Voor 19% gewijzigd door Verwijderd op 14-05-2012 23:56 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-09 23:05
ValHallASW schreef op vrijdag 11 mei 2012 @ 22:59:
code:
1
2
3
>>> import unicodedata
>>> unicodedata.normalize("NFC", u"\xe4") == unicodedata.normalize("NFC", u"a\u0308")
True


Die moet ik nog altijd een keertje gaan toepassen op gebruikersnaamveldjes ;-)
Da's ook niet zaligmakend hoor.
>>> s = u"Sοultakеr"
>>> t = u"Soultaker"
>>> unicodedata.normalize("NFC", s) == unicodedata.normalize("NFC", t)
False
offtopic:
Waarom displayt bovenstaande code niet goed in code/cmd/pre tags?

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

Soultaker schreef op dinsdag 15 mei 2012 @ 02:27:
offtopic:
Waarom displayt bovenstaande code niet goed in code/cmd/pre tags?
Omdat code/cmd/pre tags een slecht programmeervoorbeeld zijn. Prima ontopic dus. :Y)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Soultaker schreef op dinsdag 15 mei 2012 @ 02:27:
offtopic:
Waarom displayt bovenstaande code niet goed in code/cmd/pre tags?
Omdat niet-latin-1 tekens worden omgezet naar html entities voordat de RML parser er überhaupt overheen gaat, waarna ze vervolgens verbatim worden afgedrukt omdat het code/cmd/pre tags zijn.

GoT is niet UTF-8 :/

[ Voor 3% gewijzigd door .oisyn op 15-05-2012 10:32 ]

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!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

Verwijderd schreef op maandag 14 mei 2012 @ 23:56:
PHP:
1
2
3
4
5
6
7
8
9
function index()
{
    if ($this->ion_auto->logged_in() || 2+2==4)
    {
        $this->load->view('upload');
    }

    ... snip ...
}


Bron
zal wel een FxCop (achtige) tool willen omzijlen die || true) niet accepteerd :P Maar heel slecht om zo je login te bypassen :P

NKCSS - Projects - YouTube


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
ValHallASW schreef op vrijdag 11 mei 2012 @ 22:13:
Scheelt toch maar weer een library installeren.
Af en toe ben ik toch zo blij met het feit dat .NET dit allemaal compleet afgeregeld heeft en ingebouwd heft zitten in het culture-sensitive zijn van string comparison en string equality comparison. Zeg wat je wilt van Microsoft, maar daar hebeen ze toch echt goed over nagedacht en een heel mooi stuk werk neergezet.

Jammer genoeg is dat ze met DateTime dan weer niet helemaal gelukt. :P

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
https://github.com/django...backends/__init__.py#L843
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    def convert_values(self, value, field):
        """Coerce the value returned by the database backend into a consistent type that
        is compatible with the field type.
        """
        internal_type = field.get_internal_type()
        if internal_type == 'DecimalField':
            return value
        elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':
            return int(value)
        elif internal_type in ('DateField', 'DateTimeField', 'TimeField'):
            return value
        # No field, or the field isn't known to be a decimal or integer
        # Default to a float
        return float(value)

"OOP, zo moet het dus niet"

Daar zit je dan met een veld dat 'IntervalField' heet en netjes datetime.timedelta's uitspuugt. En nee, die laten zich niet casten naar float :(

Acties:
  • 0 Henk 'm!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

ValHallASW schreef op dinsdag 15 mei 2012 @ 22:36:
https://github.com/django...backends/__init__.py#L843
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    def convert_values(self, value, field):
        """Coerce the value returned by the database backend into a consistent type that
        is compatible with the field type.
        """
        internal_type = field.get_internal_type()
        if internal_type == 'DecimalField':
            return value
        elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':
            return int(value)
        elif internal_type in ('DateField', 'DateTimeField', 'TimeField'):
            return value
        # No field, or the field isn't known to be a decimal or integer
        # Default to a float
        return float(value)

"OOP, zo moet het dus niet"

Daar zit je dan met een veld dat 'IntervalField' heet en netjes datetime.timedelta's uitspuugt. En nee, die laten zich niet casten naar float :(
Zal wel aan mij liggen, maar deze volgorde lijkt me ook niet heel handig:
if internal_type == 'DecimalField':
return value
elif internal_type and
Doet dus eerst een check tegen een waarde (gaat er van uit dat waarde van type sting is en niet null, en als het die string niet is, gaat ie checken of ie wellicht null is... ben niet bekend met de taal, maar als ie null is, krijg je in eerste instantie meteen een exception, of de is null check in de elif is totaal overbodig :) ).

NKCSS - Projects - YouTube


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

CMG schreef op woensdag 16 mei 2012 @ 16:28:
Doet dus eerst een check tegen een waarde (gaat er van uit dat waarde van type sting is en niet null, en als het die string niet is, gaat ie checken of ie wellicht null is... ben niet bekend met de taal, maar als ie null is, krijg je in eerste instantie meteen een exception, of de is null check in de elif is totaal overbodig :) ).
Hoezo dat? In Java geeft het volgende toch ook geen exception?
Java:
1
2
3
if (null == "hallo") {
    /* ... */
}

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22-09 21:04
Punt 1: dit is python, geen java. En in python krijg je volgens mij een exception als het (bijvoorbeeld) een integer of None is.
Punt 2: in java heeft de == operator op strings (zonder .intern()) bijzonder weinig nut, altijd string.equals(otherString) gebruiken (die dus wel een NPE geeft als string null is.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
MBV schreef op donderdag 17 mei 2012 @ 20:30:
Punt 1: dit is python, geen java. En in python krijg je volgens mij een exception als het (bijvoorbeeld) een integer of None is.
Python:
1
2
3
4
>>> None == "string"
False
>>> 0 == "string"
False


De code klopt gewoon hoor. De reden dat 'ie pas bij de tweede een null-check doet is omdat
code:
1
2
3
4
>>> None.endswith("g")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'endswith'


uiteraard niet werkt.

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op donderdag 17 mei 2012 @ 20:30:
Punt 2: in java heeft de == operator op strings (zonder .intern()) bijzonder weinig nut, altijd string.equals(otherString) gebruiken
Dat weet ik...
(die dus wel een NPE geeft als string null is.
...vandaar dat ik dus niet .equals() gebruikte. :)
Punt 1: dit is python, geen java. En in python krijg je volgens mij een exception als het (bijvoorbeeld) een integer of None is.
ValHallASW heeft het hierboven al aangekaart hoe het zit in Python, maar jouw opmerking hier deed een vraag in mij rijzen:

code:
1
x == y

Bestaan er talen waarin je een x en/of y kunt vinden, zodanig dat de bovenstaande vergelijking een exception gooit?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
RayNbow schreef op donderdag 17 mei 2012 @ 21:05:
code:
1
x == y

Bestaan er talen waarin je een x en/of y kunt vinden, zodanig dat de bovenstaande vergelijking een exception gooit?
code:
1
2
3
4
5
6
7
8
9
>>> class Test(object):
...    def __eq__(self, other):
...       raise Exception()
...
>>> Test() == Test()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __eq__
Exception


Dat is natuurlijk een beetje flauw, maar dit is geen geheel onredelijke code:

code:
1
2
3
4
5
6
7
8
9
10
>>> class Test(object):
...     a = 1
...     def __eq__(self, other):
...         return self.a == other.a
...
>>> Test() == None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __eq__
AttributeError: 'NoneType' object has no attribute 'a'

[ Voor 29% gewijzigd door ValHallASW op 17-05-2012 21:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

offtopic:
Is deze deeel van de topic niet een beetje groot aan het worden?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nee, we beginnen pas net. :P

{signature}


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22-09 21:04
offtopic:
deze deel? :X

@RayNBow: in elke taal waar je een operator== kan definieren, en je vergeet op null te checken. Ik was bij python even in de war, wat ik erg irritant vind is dat "blaat" + 5 een exception geeft. Het is een script-taal, doe dan ook even die automatische cast naar string alsjeblieft, net zoals bijvoorbeeld java...

Acties:
  • 0 Henk 'm!

  • Solopher
  • Registratie: December 2002
  • Laatst online: 11-09 14:55
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'NL',name: 'nl',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'EN',name: 'en',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'DE',name: 'de',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'FR',name: 'fr',xtype: 'textfield',anchor: '96%'}]
            }],


Right oftewel altijd 0.2 en 96%. En het leuke is; IE ging op zijn bek omdat er een , teveel instaat.

Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
MBV schreef op vrijdag 18 mei 2012 @ 12:47:
offtopic:
deze deel? :X

@RayNBow: in elke taal waar je een operator== kan definieren, en je vergeet op null te checken. Ik was bij python even in de war, wat ik erg irritant vind is dat "blaat" + 5 een exception geeft. Het is een script-taal, doe dan ook even die automatische cast naar string alsjeblieft, net zoals bijvoorbeeld java...
Dat soort dingen vind ik juist irritant. Bij "blaat" + 5 zou daar dan blaat5 uitkomen, maar als je "1" + 1 doet, is het maar net afhankelijk van de taal of dat 2 of 11 wordt.

Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

MBV schreef op vrijdag 18 mei 2012 @ 12:47:
offtopic:
deze deel? :X

@RayNBow: in elke taal waar je een operator== kan definieren, en je vergeet op null te checken. Ik was bij python even in de war, wat ik erg irritant vind is dat "blaat" + 5 een exception geeft. Het is een script-taal, doe dan ook even die automatische cast naar string alsjeblieft, net zoals bijvoorbeeld java...
Nee, nee, nee :|

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


Acties:
  • 0 Henk 'm!

  • ZaPPZion
  • Registratie: Februari 2009
  • Laatst online: 28-08 12:46
_JGC_ schreef op vrijdag 18 mei 2012 @ 13:40:
[...]

Dat soort dingen vind ik juist irritant. Bij "blaat" + 5 zou daar dan blaat5 uitkomen, maar als je "1" + 1 doet, is het maar net afhankelijk van de taal of dat 2 of 11 wordt.
Ehm, of een error, dat is eigenlijk nog het meest logisch wat mij betreft

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op vrijdag 18 mei 2012 @ 12:47:
@RayNBow: in elke taal waar je een operator== kan definieren, en je vergeet op null te checken.
Maar is dit dan niet een bug in de implementatie van ==? :)

(Of het een bug is hangt natuurlijk af van het contract van ==. Het probleem is alleen dat het contract niet altijd gedocumenteerd is of bestaat, waardoor dus eigenlijk elk mogelijk gedrag goed is.)
Ik was bij python even in de war, wat ik erg irritant vind is dat "blaat" + 5 een exception geeft. Het is een script-taal, doe dan ook even die automatische cast naar string alsjeblieft, net zoals bijvoorbeeld java...
In Python zijn operators instance methods. Een automatische cast zou betekenen dat str.__add__ van het bestaan van ints moet weten, wat dus resulteert in sterkere coupling tussen str en int.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22-09 21:04
Python heeft toch ducktyping? Iedereen die aan een string wil worden geconcateneerd moet een method toString() implementeren, dan hoeft __add__ alleen maar [wateverobject].__tostring__() of zoiets aan te roepen. Maar dat zal vast te simpel gedacht zijn.

Anyway, met meer java- dan python-ervaring vond ik dat nogal irritant, dat jullie java irritant vinden moeten jullie weten ;)

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
MBV schreef op zaterdag 19 mei 2012 @ 10:18:
Python heeft toch ducktyping? Iedereen die aan een string wil worden geconcateneerd moet een method toString() implementeren, dan hoeft __add__ alleen maar [wateverobject].__tostring__() of zoiets aan te roepen. Maar dat zal vast te simpel gedacht zijn.
Dit is de tweede keer dat je een definitie bedenkt, roept dat python aan die definitie voldoet en vervolgens tot de verkeerde conclusie komt.

Ja, je kunt python een 'scripttaal' (waar nogal wat verschillende definities van zijn) noemen, maar de stap 'oh, volgens mij hoort een scripttaal altijd x, y en z te doen, *dus* is dit gedrag van python raar' slaat nergens op.

Wat je nu hier beschrijft heeft bijzonder weinig met duck typing te maken: dit kan in niet-duck typed-talen juist ook zolang maar gedefinieerd is dat de interface van elk object een toString() heeft. Duck typing betekent in deze context juist dat als je een object maakt dat zich 'als string' gedraagt (en dan is het dus /niet/ logisch naar str te casten), het aaneenplakken blijft werken.

Zie ook: duck typing

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

MBV schreef op zaterdag 19 mei 2012 @ 10:18:
Python heeft toch ducktyping?
Ja, maar dat betekent niet dat alles zich gedraagt als een string. ;)
Iedereen die aan een string wil worden geconcateneerd moet een method toString() implementeren, dan hoeft __add__ alleen maar [wateverobject].__tostring__() of zoiets aan te roepen. Maar dat zal vast te simpel gedacht zijn.
Python heeft de keuze gemaakt om str.__add__ te laten werken op strings. Wil je iets anders aan een string plakken, dan moet je de conversie zelf uitvoeren, of beter, string formatting gebruiken:
Python:
1
s = 'foo %d' % 3


Zie ook:
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
Solopher schreef op vrijdag 18 mei 2012 @ 13:34:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'NL',name: 'nl',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'EN',name: 'en',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'DE',name: 'de',xtype: 'textfield',anchor: '96%'}]
            },{
                border: false,
                columnWidth: 0.2,
                layout: 'form',
                items: [{fieldLabel: 'FR',name: 'fr',xtype: 'textfield',anchor: '96%'}]
            }],


Right oftewel altijd 0.2 en 96%. En het leuke is; IE ging op zijn bek omdat er een , teveel instaat.
Ah, wat mooi. ExtJS!
Handig he, die default en configDefault :).

Trailing comma's are a bitch...

/me weet geen leuke quote voor in zijn signature


Acties:
  • 0 Henk 'm!

  • HeSitated
  • Registratie: April 2009
  • Laatst online: 03-12-2024
Voor wie het nog niet weet, maar ook bij grote bedrijven werken soms behoorlijke |:(

Gisteren wilde ik twee externe hd behuizingen bestellen bij Amazon.de, bestelling geplaatst met one-click systeem, prima. Ooh ooohhps, kabeltjes vergeten, dus bestelling geannuleerd.

Vervolgens geprobeert de bestelling nog een keer teplaatsen, nu mét kabels, krijg ik de melding, dat dat niet mag naar het opgegeven adres.... :? :? :?

Ok, het was toch al laat (en ik wilde om 5:00 uur opstaan), ik doe het morgen wel weer...

Uiteraard kon ik vandaag wel alles bestellen en naar mijn eigen huisadres laten sturen, maar wacht even.....

Ondanks dat ik het drempelbedrag voor gratis thuis sturen ruimschoots had overschreden, moet ik nu omwille van die kabeltjes € 9,00 bestelkosten betalen... :F

Daarom de kabels maar weer verwijderd, die haal ik dan wel hier ergens....

Acties:
  • 0 Henk 'm!

  • GekkePrutser
  • Registratie: Juli 2004
  • Niet online
HeSitated schreef op maandag 21 mei 2012 @ 22:42:
Ondanks dat ik het drempelbedrag voor gratis thuis sturen ruimschoots had overschreden, moet ik nu omwille van die kabeltjes € 9,00 bestelkosten betalen... :F
Waarschijnlijk kwamen die kabeltjes niet van Amazon.de zelf vandaan, maar van een van de Amazon Marketplace aanbieders. Dan geldt dat gratis verzenden niet.

Vaak kan je wel kiezen om (eventueel tegen een iets hogere prijs) bij Amazon zelf te kopen. Aan de rechterkant heb je dan een knop met 'Alle Angebote', 'xx neu' en dan zie je een overzichtje. Hij laat standaard de goedkoopste aanbieder van een produkt zien, en dat is niet noodzakelijk Amazon zelf. Maar vaak staat die er wel tussen. En dan geldt dat gratis verzenden vaak wel.

Dat is dan ook geen programmeerfout maar wel logisch, die kabels komen dan ook echt ergens anders vandaan bij een bedrijf dat geen gratis verzenden biedt naar Nederland. Maar ze zouden het wel wat duidelijker aan kunnen geven.

offtopic:
Maargoed ik kom nu wel heel erg op het gebied van het shopping forum, sorry

[ Voor 5% gewijzigd door GekkePrutser op 21-05-2012 23:23 ]


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
KnoppenSpook schreef op maandag 21 mei 2012 @ 14:06:
[...]


Ah, wat mooi. ExtJS!
Handig he, die default en configDefault :).

Trailing comma's are a bitch...
Te zien aan wat voor data er in gaat zou het ook nog wel eens slim kunnen zijn om dat gewoon data-driven te doen, ipv statisch up-front te vullen. :)

Iemand anders trouwens ook zo'n bloody rothekel aan hoe hele stukken van ExtJS zich aan de standaard lifecycle gepredikt in de API docs (lijken te) houden, maar dat je op de één of andere manier het toch weer treft om problemen te krijgen met juist die ene component waar het (5 ancestor classes terug omhoog) toch net eventjes anders gaat. ::Urgh:: |:(

Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 03:16

Firesphere

Yoshis before Hoshis

Instacompile! Ik ben naar bed. Beertimer is "on schedule"!
Van de week even de api fixen, dan de ios n android app....

And... I gave away too much. sleep tight folks

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
R4gnax schreef op dinsdag 22 mei 2012 @ 00:07:
[...]


Te zien aan wat voor data er in gaat zou het ook nog wel eens slim kunnen zijn om dat gewoon data-driven te doen, ipv statisch up-front te vullen. :)

Iemand anders trouwens ook zo'n bloody rothekel aan hoe hele stukken van ExtJS zich aan de standaard lifecycle gepredikt in de API docs (lijken te) houden, maar dat je op de één of andere manier het toch weer treft om problemen te krijgen met juist die ene component waar het (5 ancestor classes terug omhoog) toch net eventjes anders gaat. ::Urgh:: |:(
Veel tegen aangelopen ja. Maar ik vind het bij ExtJS 4.1 wel een stuk beter. Zit wel meer lijn in.

/me weet geen leuke quote voor in zijn signature


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Paul schreef op vrijdag 11 mei 2012 @ 10:11:
[...]
Als je alleen de 6, 10 en 12 nodig hebt en er geen collega voor handen is dan is die oplossing (bedrijfseconomisch) beter dan gaan zoeken wat de betere manier is :P
Als er (permanent) geen collega voor handen is om je daarmee te helpen dan is het beter een baan te zoeken waar je wel iets kan leren van je collega's. (imho)

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


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Een parameter als het aantal milliseconden meegeven als rekensom om het aantal minuten duidelijk te maken, goed of slecht?

C#:
1
2
3
4
5
6
var t = new Timer { Interval = 30 * 60 * 1000 };
// of
t = new Timer { Interval = 1800000 };
// of
const int HALFUUR_IN_MS = 30 * 60 * 1000;
t = new Timer { Interval = HALFUUR_IN_MS };


Om nou een methode te hebben die minuten omrekent naar milliseconden is ook weer zo overbodig.

Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Die vraag doet mij herinneren aan een artikel op TheDailyWTF: http://thedailywtf.com/Articles/Sanity-Check.aspx waarbij dit zelfde vraagstuk in de comments wordt besproken.

De meeste snappen de eerste suggestie wel, de tweede is vaak al lastiger. De derde lijkt mij de beste suggestie, maar komt dicht in de buurt van:

C#:
1
const int ONE = 1;


Een interval heeft vaak een bepaalde betekenis, bijvoorbeeld de tijd tussen twee controles op nieuwe e-mail. Het mooiste vind ik om een constante daarom op de volgende manier te defineren:

C#:
1
const int UPDATE_INBOX_INTERVAL_IN_MS = 30 * 60 * 1000;


Waarbij de naam van de constante de constante duidelijk beschrijft en er aardig is af te leiden hoeveel minuten het duurt.

Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 05:27
Davio schreef op woensdag 23 mei 2012 @ 16:33:
Een parameter als het aantal milliseconden meegeven als rekensom om het aantal minuten duidelijk te maken, goed of slecht?

C#:
1
2
3
4
5
6
var t = new Timer { Interval = 30 * 60 * 1000 };
// of
t = new Timer { Interval = 1800000 };
// of
const int HALFUUR_IN_MS = 30 * 60 * 1000;
t = new Timer { Interval = HALFUUR_IN_MS };


Om nou een methode te hebben die minuten omrekent naar milliseconden is ook weer zo overbodig.
TimeSpan heeft een aantal handige static methods, waaronder FromMinutes:

C#:
1
var milliseconds = TimeSpan.FromMinutes(30).TotalMilliseconds;

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Maar dan heb ik het gevoel dat ik eerst vooruit en dan weer achteruit ga.
Ik bedoel, ik heb niet echt een timespan nodig om 30 minuten uit te rekenen.

Als ik het met een const doe dan kan ik er in ieder geval een zinnige naam aangeven en hoef ik het maar op één plek te zien.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Davio schreef op woensdag 23 mei 2012 @ 17:36:
Als ik het met een const doe dan kan ik er in ieder geval een zinnige naam aangeven en hoef ik het maar op één plek te zien.
Behalve dat HALF_UUR_IN_MS geen duidelijke titel is, dat is net zoiets als TIEN=10. Je variabele moet immers iets zeggen over wat de bedoeling van de waarde is, niet over wat de waarde zélf is!

RELOAD_INTERVAL = 30 * 60 * 1000;

lijkt me prima leesbaar. Eventueel kan je het nog verduidelijken met

RELOAD_INTERVAL = 30 * 60 * 1000; // ms

of

RELOAD_INTERVAL_MS = 30 * 60 * 1000.

ik moet meer dan twee posts terug lezen voor ik reageer

[ Voor 5% gewijzigd door ValHallASW op 23-05-2012 18:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Zeebonk schreef op woensdag 23 mei 2012 @ 16:52:
Die vraag doet mij herinneren aan een artikel op TheDailyWTF: http://thedailywtf.com/Articles/Sanity-Check.aspx waarbij dit zelfde vraagstuk in de comments wordt besproken.

De meeste snappen de eerste suggestie wel, de tweede is vaak al lastiger. De derde lijkt mij de beste suggestie, maar komt dicht in de buurt van:

C#:
1
const int ONE = 1;


Een interval heeft vaak een bepaalde betekenis, bijvoorbeeld de tijd tussen twee controles op nieuwe e-mail. Het mooiste vind ik om een constante daarom op de volgende manier te defineren:

C#:
1
const int UPDATE_INBOX_INTERVAL_IN_MS = 30 * 60 * 1000;


Waarbij de naam van de constante de constante duidelijk beschrijft en er aardig is af te leiden hoeveel minuten het duurt.
In het laatste geval zou je er nog even
C#:
1
//30 minutes.


achter kunnen zetten ;)

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Verwijderd schreef op woensdag 23 mei 2012 @ 19:28:
In het laatste geval zou je er nog even
C#:
1
//30 minutes.


achter kunnen zetten ;)
En vervolgens moet het verkort worden naar 20 minuten, en dan staat er opeens

C:
1
const int UPDATE_INBOX_INTERVAL_IN_MS = 20 * 60 * 1000; // 30 minutes


Als je dat graag wilt doen, doe dan iets als

C:
1
2
const int UPDATE_INBOX_INTERVAL_IN_MINUTES = 30;
const int UPDATE_INBOX_INTERVAL_IN_MS = UPDATE_INBOX_INTERVAL_IN_MINUTES * 60 * 1000;

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Wat maken jullie er allemaal lelijke code van zeg :/

C#:
1
2
3
4
5
6
7
8
9
10
11
12
/// <summary>
/// The answer to life, the universe and everything.
/// </summary>
private static readonly dynamic UpdateInterval = TimeSpan.FromMinutes(42);

/// <summary>
/// Wie dit leest is gek.
/// </summary>
public static void Henk()
{
    var koekjes = new Timer { Interval = UpdateInterval.TotalMilliseconds; }
}


Wegwezen met die HOOFDLETTERS, reken + sommetjes en allerlei andere vage meuk Afbeeldingslocatie: http://i.fok.nl/s/we.gif

[ Voor 7% gewijzigd door Alex) op 23-05-2012 22:31 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Daarom posten we het allemaal netjes in dit topic, wat jouw suggestie hier doet is mij dan ook een raadsel ;)

Acties:
  • 0 Henk 'm!

  • ZaPPZion
  • Registratie: Februari 2009
  • Laatst online: 28-08 12:46
Hebben we geen types meer tegenwoordig ? :P UpdateInterval is een errrr?

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06:37

Damic

Tijd voor Jasmijn thee

Krijg ik nu 2520000 koekjes? Ja ik ben gek ;D

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
ZaPPZion schreef op woensdag 23 mei 2012 @ 22:12:
Hebben we geen types meer tegenwoordig ? :P UpdateInterval is een errrr?
Fixed :Y

We are shaping the future


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Ruby / Scala / etc to the rescue

Scala:
1
var duration = 5 minutes

[ Voor 34% gewijzigd door YopY op 23-05-2012 22:40 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Alex) schreef op woensdag 23 mei 2012 @ 20:51:
Wat maken jullie er allemaal lelijke code van zeg :/
Zegt de meneer die compleet zonder enige valide reden dynamic gebruikt.

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!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
.oisyn schreef op woensdag 23 mei 2012 @ 22:42:
[...]

Zegt de meneer die compleet zonder enige valide reden dynamic gebruikt.
Afbeeldingslocatie: http://i.imgur.com/KSlbls.jpg

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 22-09 20:50

Sebazzz

3dp

Dat zou ik ook zeggen als ik niet achteraf zou willen toegeven dat ik het fout heb :P

/steeksteek

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


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Doe mij de oplossing van Zeebonk maar. Een constante met sematische naam, met waarde opgeschreven als sommetje.

Klaar is Kees. Allemaal methods gebruiken omdat je zelf niet met 60 en 1000 durft te vermenigvuldigen is mij echt te Enterprisey.

offtopic:
Let op: Dit is nog geen vrijbrief om zelf berekeningen van dates of intervals te implementeren. Daar gebruik je libraries voor en voor iedereen die denkt 'wel ff zelf een paar minuutjes bij een bepaalde datetime op te kunnen tellen' zou een verplichte levenslange dienstplicht of plantsoenendienst moeten gelden. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Niet om 't een of ander, maar ik denk wel dat ik het beter kan dan menig library *kuch*.net*kuch* ;)

[ Voor 13% gewijzigd door .oisyn op 23-05-2012 23:42 ]

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

Natuurlijk maak je een klasse die Timer overerft met de onderstaande code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public class ClockTimer : System.Timers.Timer
    {

        public double IntervalInMinutes
        {
            get
            {
                return Interval / 1000 / 60;
            }
            set
            {
                Interval = value * 1000 * 60;
            }
        }

    }


:+

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee ik zou er toch echt een webservice voor gebruiken hoor ;)

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: 13-07 01:14
.oisyn schreef op donderdag 24 mei 2012 @ 09:42:
Nee ik zou er toch echt een webservice voor gebruiken hoor ;)
pfsh, J2EE stack, draaien op WebSphere in de cloud.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
C:
1
2
3
4
namebuffer[0] = 48 + (((numberOfCookies)/1000) % 10);
namebuffer[1] = 48 + (((numberOfCookies)/100) % 10);
namebuffer[2] = 48 + (((numberOfCookies)/10) % 10);
namebuffer[3] = 48 + ((numberOfCookies) % 10);

Afbeeldingslocatie: http://i.qkme.me/3pfbzc.jpg
en dan óók nog 48 gebruiken ipv '0'

[ Voor 8% gewijzigd door ValHallASW op 24-05-2012 13:42 ]


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op donderdag 24 mei 2012 @ 07:38:
Natuurlijk maak je een klasse die Timer overerft met de onderstaande code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public class ClockTimer : System.Timers.Timer
    {

        public double IntervalInMinutes
        {
            get
            {
                return Interval / 1000 / 60;
            }
            set
            {
                Interval = value * 1000 * 60;
            }
        }

    }


:+
Ik zou toch eerder voor een extension method gaan in dit geval.
(Momenteel zijn er nog geen extension properties in .NET 4.0)
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace ConsoleApplication1 {
    public class Program {
        static void Main(string[] args) {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.SetIntervalInMinutes(10);
            timer.GetIntervalInMinutes();
        }
    }

    public static class TimerHelper {

        public static double GetIntervalInMinutes(this System.Timers.Timer timer) {
            return timer.Interval / 1000 / 60;
        }

        public static void SetIntervalInMinutes(this System.Timers.Timer timer, int minutes) {
            timer.Interval = minutes * 1000 * 60;
        }
    }
}

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Alleen het feit al dat het hier een volle pagina over gaat is voor mij voldoende bewijs dat het toch niet zo 'clear cut' is.

Ik zit ook een beetje te stoeien met StyleCop en de ingebakken Code Analysis van Visual Studio.
Sommige rules vind ik gewoon complete onzin.

Zoals overal overbodige comments boven zetten. Bijvoorbeeld bij een constructor
C#:
1
2
3
4
5
6
7
8
9
10
public class Monkey
{
  /// <summary>
  ///  Creates a new instance of Monkey.
  /// </summary>
  public Monkey(string name)
  {
    Name = name;
  }
}


Of bij event handlers, dat je moet zeggen waar sender voor staat en het argument e van de EventArgs. :F

En ik ben ook van de regions afgestapt, om nu in klasses met 1 constructor die constructor in een region te zetten... Ik gebruik regions nu alleen nog maar om bij elkaar horende dingen te groeperen, bijvoorbeeld 20 DelegateCommands onder elkaar.

Acties:
  • 0 Henk 'm!

  • ZaPPZion
  • Registratie: Februari 2009
  • Laatst online: 28-08 12:46
Die overbodige comments is wel iets waar je misschien later wat aan kan hebben. Stel dat een Monkey kind kan zijn met van andere Monkey, wat is dan nu de string naam die je meegeeft in de constructor? De naam van de Monkey of die van een ouder? (ik verzin maar ff wat)

[ Voor 6% gewijzigd door ZaPPZion op 24-05-2012 21:14 ]


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 03:16

Firesphere

Yoshis before Hoshis

If the code is hard to write, it should be hard to read. Do not comment.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

Verwijderd

vinnux schreef op donderdag 24 mei 2012 @ 15:10:
[...]

Ik zou toch eerder voor een extension method gaan in dit geval.
(Momenteel zijn er nog geen extension properties in .NET 4.0)
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace ConsoleApplication1 {
    public class Program {
        static void Main(string[] args) {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.SetIntervalInMinutes(10);
            timer.GetIntervalInMinutes();
        }
    }

    public static class TimerHelper {

        public static double GetIntervalInMinutes(this System.Timers.Timer timer) {
            return timer.Interval / 1000 / 60;
        }

        public static void SetIntervalInMinutes(this System.Timers.Timer timer, int minutes) {
            timer.Interval = minutes * 1000 * 60;
        }
    }
}
Dat kan natuurlijk ook ;)

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:43
ValHallASW schreef op donderdag 24 mei 2012 @ 13:40:
C:
1
2
3
4
namebuffer[0] = 48 + (((numberOfCookies)/1000) % 10);
namebuffer[1] = 48 + (((numberOfCookies)/100) % 10);
namebuffer[2] = 48 + (((numberOfCookies)/10) % 10);
namebuffer[3] = 48 + ((numberOfCookies) % 10);

[afbeelding]
en dan óók nog 48 gebruiken ipv '0'
Op school hebben we ook weleens zoiets geschreven als tweedejaars, ik heb zelfs de exacte code nog. :P

C:
1
2
3
4
5
6
7
8
char* printNum(unsigned char number) {
  unsigned char array[4];
  array[0] = ((number/(10 * 10)) % 10) + 48;
  array[1] = ((number/10) % 10) + 48;
  array[2] = (number % 10) + 48;
  array[3] = '\0';
  return &array;
}
:')

't Was voor een microprocessor en met printf() zou het programmageheugen in één keer vol zijn.

[ Voor 6% gewijzigd door Jaap-Jan op 24-05-2012 22:24 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

Verwijderd

Hier staan ook wel leuke dingen tussen!

Zoals:

C#:
1
2
3
4
5
6
7
8
9
static bool IsDataFOK(string filetext)
{
     bool res = false;
     if (string.IsNullOrEmpty(filetext) || !filetext.Contains(",")) goto end;

     res = true
     end:
     return res;
}

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Verwijderd schreef op donderdag 24 mei 2012 @ 22:35:
Hier staan ook wel leuke dingen tussen!

Zoals:

C#:
1
2
3
4
5
6
7
8
9
static bool IsDataFOK(string filetext)
{
     bool res = false;
     if (string.IsNullOrEmpty(filetext) || !filetext.Contains(",")) goto end;

     res = true
     end:
     return res;
}
Met dat soort code kun je er redelijkerwijs vanuit gaan dat je data inderdaad fokked is. :+


Ach. Het kan ook erger zijn. Je kunt ook Google zijn en al sinds versie 18 van je browser een fout in de constructor inlining optimalisatie hebben zitten van je JavaScript engine, waardoor je in elk geval jQuery (en daarmee potentieel zo'n 50% van het internet) op non-deterministische wijze als een tikkende tijdbom om zeep helpt.

Oops!

[ Voor 28% gewijzigd door R4gnax op 24-05-2012 22:56 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Nu online

RayNbow

Kirika <3

R4gnax schreef op donderdag 24 mei 2012 @ 22:50:
Ach. Het kan ook erger zijn. Je kunt ook Google zijn en al sinds versie 18 van je browser een fout in de constructor inlining optimalisatie hebben zitten van je JavaScript engine, waardoor je in elk geval jQuery (en daarmee potentieel zo'n 50% van het internet) op non-deterministische wijze als een tikkende tijdbom om zeep helpt.
Ik vind Issue 128527: REGRESSION: Tooltips don't appear anymore een ergere bug en veroorzaakt minstens 3x per week voor ergernissen (xkcd). :+

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
ZaPPZion schreef op donderdag 24 mei 2012 @ 21:13:
Die overbodige comments is wel iets waar je misschien later wat aan kan hebben. Stel dat een Monkey kind kan zijn met van andere Monkey, wat is dan nu de string naam die je meegeeft in de constructor? De naam van de Monkey of die van een ouder? (ik verzin maar ff wat)
Nou, comments moeten wel iets zinnigs zeggen.
Als ze alleen maar de naam van de methode of de property herhalen, is het vrij nutteloos.

C#:
1
2
3
4
/// <summary>
/// Gets or sets the magic number, ORLY??
/// </summary>
public int MagicNumber { get; set;}

Acties:
  • 0 Henk 'm!

Verwijderd

Davio schreef op vrijdag 25 mei 2012 @ 08:16:
[...]

Nou, comments moeten wel iets zinnigs zeggen.
Als ze alleen maar de naam van de methode of de property herhalen, is het vrij nutteloos.

C#:
1
2
3
4
/// <summary>
/// Gets or sets the magic number, ORLY??
/// </summary>
public int MagicNumber { get; set;}
Toch vind ik dat soort dingen wel handig. Zeker als je alleen de documentatie hebt (b.v. van een library), dan is het fijn om te weten dat die property echt alleen gets en sets doet en verder niets anders. Zelfs bij libraries die ik zelf gemaakt heb is dat nog handig, aangezien ik niet telkens terug wil naar de code.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Verwijderd schreef op vrijdag 25 mei 2012 @ 08:42:
[...]


Toch vind ik dat soort dingen wel handig. Zeker als je alleen de documentatie hebt (b.v. van een library), dan is het fijn om te weten dat die property echt alleen gets en sets doet en verder niets anders. Zelfs bij libraries die ik zelf gemaakt heb is dat nog handig, aangezien ik niet telkens terug wil naar de code.
Maar zelfs dan blijft de stelregel: Als je commentaar moet schrijven om je code te begrijpen, moet je toch even achter je oren krabben of je code zelf niet gefixed moet worden.

Op het moment doen we niet / nauwlijks aan commentaar; waarschijnlijk krijg ik WTFs over een paar maanden :+. Sterker nog, krijg ik nu al, zo van 'waarom staat er een width: 398 in deze css regel? :?'

voor de gein eens in de Java code gedoken. Ik zie auto-generated comments (of automatisch, of uit automatisme) die weinig toevoegen :'(. Voorbeeld (geen directe c/p ivm het feit dat dat niet mag :+)

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Finds a Product by a query
 *
 * @param query
 *        A search string for used to find matching Products
 * @return The Products found
 */
 @GET
  public Collection<Product> searchProducts(@QueryParam("query") String query) {
    if (isEmpty(query)) {
      return emptyList();
    }
    return productSearchDao.search(query);
  }


tenslotte: frustratie van de dag / week, mot op een braq oud Dell toetsenbord van 2 euro werken, en de rechter shifttoets reageert niet goed meer, waardoor dubbelepunten regelmatig puntkomma's worden :(. Niet handig als je JS doet.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Ik heb hier ook bestanden vol met automatisch gegenereerde code.

Het wordt wel heel zielig als je dan Engelse comments krijgt bij Nederlandse methodenamen. Code is geërfd, anders had ik denk ik voor alles Engels gekozen, al blijft dat een gek iets.

Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Jaap-Jan schreef op donderdag 24 mei 2012 @ 22:23:
[...]
Op school hebben we ook weleens zoiets geschreven als tweedejaars, ik heb zelfs de exacte code nog. :P

C:
1
2
3
4
5
6
7
8
char* printNum(unsigned char number) {
  unsigned char array[4];
  array[0] = ((number/(10 * 10)) % 10) + 48;
  array[1] = ((number/10) % 10) + 48;
  array[2] = (number % 10) + 48;
  array[3] = '\0';
  return &array;
}
:')

't Was voor een microprocessor en met printf() zou het programmageheugen in één keer vol zijn.
Ehm, ik ben een beetje uit de pointers e.d., maar wordt hier array niet op de stack aangemaakt en gaat dit dus grondig fout als je daar een pointer naar returnt?.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Klopt. Maar daarnaast klopt er sowieso geen drol van, want hij returnt een pointer naar char[4] ipv pointer naar char, waarvan het type dus char(*)[4] is en geen char*. Nou heeft de pointer naar de array en de pointer naar het eerste element toevallig wel dezelfde waarde (beide beginnen immers op dat adres), maar toch zijn de types niet compatible.

[ Voor 48% gewijzigd door .oisyn op 25-05-2012 12:24 ]

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!

  • Quincy5
  • Registratie: November 2006
  • Laatst online: 09:08
YopY schreef op vrijdag 25 mei 2012 @ 09:25:
[...]

tenslotte: frustratie van de dag / week, mot op een braq oud Dell toetsenbord van 2 euro werken, en de rechter shifttoets reageert niet goed meer, waardoor dubbelepunten regelmatig puntkomma's worden :(. Niet handig als je JS doet.
Waarom kun je geen nieuwe krijgen? Bezuinigen op een tool van minder dan 10 euro, wat al gauw meer aan productiviteit kost? :N Daar zou ik echt niet tegen kunnen en desnoods zelf een ander toetsenbord regelen.

PV Output


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 03:16

Firesphere

Yoshis before Hoshis

YopY schreef op vrijdag 25 mei 2012 @ 09:25:
tenslotte: frustratie van de dag / week, mot op een braq oud Dell toetsenbord van 2 euro werken, en de rechter shifttoets reageert niet goed meer, waardoor dubbelepunten regelmatig puntkomma's worden :(. Niet handig als je JS doet.
Als je met zulk slecht spul moet werken, dan moet je je beklagen, of zelf voor iets beters zorgen. Voor een paar tientjes een goed toetsenbord kopen scheelt heel veel. Anders heb je over een paar jaar een Carpaal tunnel syndroom of erger. Zit je ook niet op te wachten.
Kleine moeite, heel erg veel plezier.

Ehm, met Quincy dus.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 09:10

Patriot

Fulltime #whatpulsert

Davio schreef op vrijdag 25 mei 2012 @ 09:31:
Ik heb hier ook bestanden vol met automatisch gegenereerde code.

Het wordt wel heel zielig als je dan Engelse comments krijgt bij Nederlandse methodenamen. Code is geërfd, anders had ik denk ik voor alles Engels gekozen, al blijft dat een gek iets.
Oeh, is het weer tijd voor die discussie? :9

Acties:
  • 0 Henk 'm!

Verwijderd

Ik vond hem niet direct terug in dit topic dus hierbij: http://hatepaste.com

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

:D :'( :D
count — Count all elements in an array, or something in an object
Ah, something. Bedankt. d:)b

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 10:15
Tsja, als je de helft quote kun je van alles een slecht voorbeeld maken. De volgende regel is namelijk:
For objects, if you have SPL installed, you can hook into count() by implementing interface Countable. The interface has exactly one method, Countable::count(), which returns the return value for the count() function.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

En wat is dan het gedrag als je geen SPL hebt geïnstalleerd, en/of als je object geen ICountable implementeert?

"Something" hoort gewoon niet op een man-page.

[ Voor 7% gewijzigd door CodeCaster op 01-06-2012 14:23 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Gleighton
  • Registratie: November 2008
  • Niet online
Je bent wel erg veeleisend voor de php documentatie :+

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 08:26
niet echt een slecht programmeervoorbeeld, maar wel een leuke interactie 'error' tussen software en eindgebruiker.

De oude versie van onze software verzond middels FTP orders naar elkaar. De nieuwe software 'verzend' orders tussen gebruikers via een database. Dus: Klant A maakt order aan > order wordt opgeslagen in DB > Klant B ziet nieuwe order.

Nu trad er een error op bij het opslaan dus kreeg klant A een foutmelding in beeld 'order is niet opgeslagen'.
Zegt de klant:
Maakt mij niet uit dat hij niet opgeslagen is. Als hij maar verzonden is.
_/-\o_ _O-

Heb de foutmelding maar even aangepast naar 'Order niet verzonden' :+

[ Voor 5% gewijzigd door PdeBie op 01-06-2012 15:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Dan krijg je binnenkort:
Maakt mij niet uit dat hij niet verzonden is. Als hij maar opgeslagen is.
:+

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
pdebie schreef op vrijdag 01 juni 2012 @ 15:14:

Heb de foutmelding maar even aangepast naar 'Order niet verzonden' :+
Ik hoop dat je logging nog wel accuraat is. Persoonlijk zou ik enkel de 1e foutmelding uitgebreid hebben, maar ok ik werk dan ook liever met foutnrs gevolgd door een textuele melding (dan kan de textuele melding compleet naar wens van de klant zijn, zolang hij het foutnr doorgeeft weten wij waar we moeten kijken)

Als de klant over 3 maanden opbelt met de melding dat er orders niet verzonden worden dan zou ik niet direct gaan kijken of ze wel opgeslagen worden, ik zou in 1e instantie dan enkel kijken naar het gedeelte wat de orders verzend.

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 08:26
verzenden = opslaan in dit geval. Het systeem werkt met 1 database waar zowel de verzender als ontvanger partij naar kijken. Er vind geen verzending van fysieke bestanden meer plaats zoals eerst via FTP.

Probleem alleen is, is dat wij met een gebruikersgroep werken die letterlijk met de muis naar de rechterbovenhoek gaan (ken je de reclame nog? ;) ). Onze helpdesk werd platgebeld door deze gebruikers met de vraag waarom de order opgeslagen is en niet verzonden. Om te voorkomen dat we straks 1200 gebruikers moeten uitleggen wat het verschil tussen opslaan en verzenden is, hebben we besloten de tekst aan te passen naar een tekst die ze nog kenden uit het oude systeem.

Logging is uiteraard voldoende om voor ons te zien waarom een eventuele order niet opgeslagen is.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb in de loop der jaren wel wat bagger gezien, dat weinig dingen zijn die me nog kunnen verbazen. Maar toch lukt het sommige personen toch nog wel:
PHP:
1
2
3
header('Content-Type: application/pdf');
header("Location:".DOC_ROOT.$filename." target: "_blank"");
echo $file;


Dafuq did I just read!? |:(

Acties:
  • 0 Henk 'm!

  • Ram0n
  • Registratie: Maart 2002
  • Laatst online: 03-07 13:05

Ram0n

Bierbrouwende nerd

Zucht... Collega kreeg een brief van zijn hostingpartij binnen met informatie over een nieuw beheerpakket voor klanten, en er werd doodleuk afgesloten met: "Uw inloggevens zijn niet veranderd, u kunt dus nog steeds inloggen met gebruikersnaam xxxxx en wachtwoord xxxx" |:(

Eigenaar/brouwer Milky Road Brewery


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Nu online
Het lijkt me inderdaad niet handig om je wachtwoord hetzelfde te maken als de eerste 4 karakters van je gebruikersnaam =)

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
Freeaqingme schreef op dinsdag 05 juni 2012 @ 21:37:
Het lijkt me inderdaad niet handig om je wachtwoord hetzelfde te maken als de eerste 4 karakters van je gebruikersnaam =)
Wie verwacht nou dat je gebruikersnaam en wachtwoord vrijwel identiek zijn? Perfect wachtwoord zou ik zeggen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Zo heb ik mijn wachtwoord ingesteld op incorrect. Wanneer ik mijn wachtwoord vergeten ben vul ik gewoon iets random in en dan zeggen de meeste engelstalige websites zelf wel: "your password is incorrect." :+

Acties:
  • 0 Henk 'm!

Verwijderd

Slim, incorrect is wel het laatste wat ze zullen proberen :+

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Nu online
Ram0n schreef op dinsdag 05 juni 2012 @ 21:33:
Zucht... Collega kreeg een brief van zijn hostingpartij binnen met informatie over een nieuw beheerpakket voor klanten, en er werd doodleuk afgesloten met: "Uw inloggevens zijn niet veranderd, u kunt dus nog steeds inloggen met gebruikersnaam xxxxx en wachtwoord xxxx" |:(
Without kidding, het is natuurlijk in- en intriest, zeker anno 2012. Dit zou voor mij reden zijn een andere leverancier te zoeken.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Nu online
Verwijderd schreef op dinsdag 05 juni 2012 @ 22:24:
Zo heb ik mijn wachtwoord ingesteld op incorrect. Wanneer ik mijn wachtwoord vergeten ben vul ik gewoon iets random in en dan zeggen de meeste engelstalige websites zelf wel: "your password is incorrect." :+
off-topic: Dat heb je afgekeken van een post op memebase ;)

Ben ik aan het werken aan het versturen van een counter via een $_POST, gebruik ik dit om te valideren of het wel een getal is:

PHP:
1
if(!is_int($_POST['count'])) return;


En maar blijven afvragen waarom het verzoek mislukt -_-

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Nu online
Ik gok zomaar dat je boven dit stukje code niet het volgende hebt staan? :)

$_POST['count'] = (int) $_POST['count']; :D

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Nu online
Freeaqingme schreef op dinsdag 05 juni 2012 @ 23:40:
Ik gok zomaar dat je boven dit stukje code niet het volgende hebt staan? :)

$_POST['count'] = (int) $_POST['count']; :D
Jup. Heb het uiteindelijk weggelaten omdat het in de huidige code toch geen probleem vormt moest het toch geen int zijn, komt verder alleen in een for lus voor (als $i<=$_POST['count'], dus geen probleem...)

Edit: zou beter stoppen en morgen verder werken ^^

[ Voor 5% gewijzigd door azerty op 05-06-2012 23:55 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Freeaqingme schreef op dinsdag 05 juni 2012 @ 23:40:
Ik gok zomaar dat je boven dit stukje code niet het volgende hebt staan? :)

$_POST['count'] = (int) $_POST['count']; :D
Waarna de hele check nutteloos wordt, want $_POST['count'] is vervolgens altijd een int, ook als het een string was.

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!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Verwijderd schreef op dinsdag 05 juni 2012 @ 22:24:
Zo heb ik mijn wachtwoord ingesteld op incorrect. Wanneer ik mijn wachtwoord vergeten ben vul ik gewoon iets random in en dan zeggen de meeste engelstalige websites zelf wel: "your password is incorrect." :+
Dan vind ik correct als password veel slimmer.
Als er dan iemand anders onder jouw naam probeerd in te loggen krijgen ze de melding dat het password correct is maar komen ze er niet in.
Dwaalspoor!

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


Acties:
  • 0 Henk 'm!

  • spleethoven
  • Registratie: Oktober 2010
  • Laatst online: 24-01-2024
Dit bracht toch ook een grijns teweeg:

JavaScript:
1
2
3
4
//No coma on numbers
function nocoma(e){
..
}


Franstaligen en hun engels...

Acties:
  • 0 Henk 'm!

  • Gimmeabrake
  • Registratie: December 2008
  • Laatst online: 21-09 16:52
Kwam zojuist dit tegen:
PHP:
1
2
3
4
5
6
list($invalidtimes, $incuficienttimeleft) = mysqli_fetch_array(mysqli_query($conn, "
   SELECT 
      TIME_TO_SEC('$starttime') >= TIME_TO_SEC('$endtime'), 
      $stats_xml->timeleft < (TIME_TO_SEC('$endtime') - TIME_TO_SEC('$starttime')) / 60"
   )
);


Iemand heeft dus ooit verzonnen dat hij met PHP variabelen in MySQL ging rekenen omdat hij het handiger vond. Oh, had ik al verteld dat deze variabelen uit een SOAP request komen en nergens een escape_string oid te vinden is? 8)7

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
YouTube: How To Cancel Any Auction

Dit mag hier niet ontbreken vind ik... Je zou meer verwachten van een bedrijf als Blizzard
Pagina: 1 ... 87 ... 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. :)