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

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Verwijderd schreef op maandag 29 november 2010 @ 22:51:
[...]

Niet helemaal correct. Dit is IsNullOrEmpty:
C#:
1
2
3
4
5
6
7
8
public static bool IsNullOrEmpty(string value)
{
    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}


[/code]
Commons StringUtils ook:

Java:
1
2
3
public static boolean isEmpty(CharSequence cs) {
    return cs == null || cs.length() == 0;
}


Iets compactere notatie (en werkt op een iets abstracter objecttype), maar effectief hetzelfde.
.NET 4.0 geeft je dan ook nog IsNullOrWhiteSpace, welke iets uitgebreider is:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static bool IsNullOrWhiteSpace(string value)
{
    if (value != null)
    {
        for (int i = 0; i < value.Length; i++)
        {
            if (!char.IsWhiteSpace(value\[i]))
            {
                return false;
            }
        }
    }
    return true;
}
StringUtils heeft die ook, alhoewel die nog een 'guard clause' (oid) heeft die eerst controleert of de string ook empty is. Alhoewel het weer een beetje gek is dat ze niet gewoon isEmpty() aanroepen, ipv dat ze die functie inlinen.
Freeaqingme schreef op dinsdag 30 november 2010 @ 01:00:
Weet iemand of/hoe je in Java 251 objecten in 1 object kan stoppen? :D
LOL. In Java 1.5 (en verder) heb je daar de varargs dinges voor. Het is op zich niet zo'n mooie oplossing, maar vooruit.

Java:
1
2
3
4
5
6
7
8
public static Object[] createArray(Object ... objects) {
    return objects;
}

// voorbeeld: occifiële syntax
Object[] objects = new Object[] {obj1, obj2, obj3};
// met createArray
Object[] objects = createArray(obj1, obj2, obj3);


Niet eens zo'n dramatisch verschil, maar vooruit, kan me voorstellen dat mensen de occifiële syntax lelijk of onhandig vinden.

@zelf, gebruik vaak StringUtils.EMPTY, is gewoon "", maar dan in een constante. Qua efficiëntie maakt het niks uit - als StringUtils voor het eerst aangeroepen wordt wordt de empty string in de pool gepleurd (oid, wat de terminologie maar mag zijn) en wordt dat object altijd gebruikt. Het schoolvoorbeeld van immutable objecten en hun voordelen mbt performance.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik denk sowieso dat het java 4 code is, anders ga je ook geen array van Object maken maar gewoon van T.

En lol @ Davio :P

[ Voor 13% gewijzigd door .oisyn op 30-11-2010 12:04 ]

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


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
.oisyn schreef op dinsdag 30 november 2010 @ 12:03:
Ik denk sowieso dat het java 4 code is, anders ga je ook geen array van Object maken maar gewoon van T.

En lol @ Davio :P
Hihi, ik leer elke dag, wist niet dat dat kon in C#, had het wel gezien in objective-C met categories.

Mea culpa. |:(

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sebazzz schreef op dinsdag 30 november 2010 @ 09:23:
[...]
Heb je het over anonymous types? Dat werkt niet erg prettig eigenlijk, niet als je ze buiten de context van een enkele methode wilt gebruiken:
Nee ik heb het erover, dat je in plaats van een CreateArray met params functie ook gewoon de array initializer syntax kunt gebruiken.
C#:
1
obj[] myArray = new []{ obj1, obj2, ..., objX };

Maar ik weet dus niet zeker of een dergelijke syntax ook in Java bestaat.

[ Voor 7% gewijzigd door Woy op 30-11-2010 12:27 ]

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

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 06-10 10:20

Janoz

Moderator Devschuur®

!litemod

Ja, dergelijke syntax bestaat in java. Daar kun je ook middels {} een array vullen. Die syntax is trouwens ook in het code voorbeeld terug te vinden in de implementaties van de methoden ;).

De aangehaalde code is echter onderdeel van Groovy. Een dynamische taal die op een JVM draait. het gaat hier waarschijnlijk om helper methods om dergelijke functionaliteit in Groovy te kunnen faciliteren. Versies van voor 1.7 hadden ook ondersteuning voor 1.4 waarin de meerdere argumenten notatie nog niet beschikbaar was.

[ Voor 11% gewijzigd door Janoz op 30-11-2010 12:45 ]

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


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Woy schreef op dinsdag 30 november 2010 @ 12:26:
[...]

Nee ik heb het erover, dat je in plaats van een CreateArray met params functie ook gewoon de array initializer syntax kunt gebruiken.
C#:
1
obj[] myArray = new []{ obj1, obj2, ..., objX };

Maar ik weet dus niet zeker of een dergelijke syntax ook in Java bestaat.
Ja :)
Java:
1
String[] aas = { "array", "of", "String", };

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


Acties:
  • 0 Henk 'm!

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

Snake

Los Angeles, CA, USA

Sebazzz schreef op dinsdag 30 november 2010 @ 09:23:
[...]

Heb je het over anonymous types? Dat werkt niet erg prettig eigenlijk, niet als je ze buiten de context van een enkele methode wilt gebruiken:

C#:
1
2
3
4
5
6
7
8
List<???> vliegen = new List<???>();
for (int i=1;i<=10;i++) {
     var vlieg = new { naam="fifi", leeftijd=DateTime.Now.AddHours(-1), cijfer=10 };
     vliegen.Add(vlieg);
}


return vliegen; // wat return ik?

Wat is het type van de typeparameter T in List<T>?

In C# 4 kan je eventueel nog dynamic gebruiken.
Gaat niet. Je moet er dan een class voor uitschrijven.

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


Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 19:46

BM

Moderator Spielerij
En terecht, kan me geen situatie bedenken waar je dat zou willen. Op de plekken waar je dat object wilt gebruiken zul je toch op z'n minst enige kennis van het object nodig hebben om het te gebruiken, dan kun je er dus ook gewoon een class voor maken.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het kán wel:
C#:
1
2
3
4
5
var vliegen = (new[] { new naam="fifi", leeftijd=DateTime.Now.AddHours(-1), cijfer=10 } }).ToList();
for (int i=1;i<10;i++) { 
     var vlieg = new { naam="fifi", leeftijd=DateTime.Now.AddHours(-1), cijfer=10 }; 
     vliegen.Add(vlieg); 
} 

De syntax kan vast wat korter, maar ik ben niet zo bekend met anonymous types in C# :)

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!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 21:19

RayNbow

Kirika <3

.oisyn schreef op dinsdag 30 november 2010 @ 14:41:
Het kán wel:
C#:
1
2
3
4
5
var vliegen = (new[] { new naam="fifi", leeftijd=DateTime.Now.AddHours(-1), cijfer=10 } }).ToList();
for (int i=1;i<10;i++) { 
     var vlieg = new { naam="fifi", leeftijd=DateTime.Now.AddHours(-1), cijfer=10 }; 
     vliegen.Add(vlieg); 
} 

De syntax kan vast wat korter, maar ik ben niet zo bekend met anonymous types in C# :)
Je mist een accolade. ;)

Het punt is trouwens niet dat je een lijst kan maken met daarin anonieme types. Het punt is dat het anonieme type niet naar buiten mag lekken in C#.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 12:36

Sebazzz

3dp

BM schreef op dinsdag 30 november 2010 @ 14:29:
En terecht, kan me geen situatie bedenken waar je dat zou willen. Op de plekken waar je dat object wilt gebruiken zul je toch op z'n minst enige kennis van het object nodig hebben om het te gebruiken, dan kun je er dus ook gewoon een class voor maken.
Bijvoorbeeld in ASP.NET MVC, waarbij je een O/R mapper gebruikt en je in je DAL een repository hebt waarbij je bijvoorbeeld alleen IDs en productnamen wilt teruggeven:

C#:
1
2
3
4
public IEnumerable<> GetProductList() {
    return from Product p in this.db.Products
              select new { Id = p.Id, Name = p.Name };
}

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


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Sebazzz schreef op dinsdag 30 november 2010 @ 15:11:
[...]

Bijvoorbeeld in ASP.NET MVC, waarbij je een O/R mapper gebruikt en je in je DAL een repository hebt waarbij je bijvoorbeeld alleen IDs en productnamen wilt teruggeven:

C#:
1
2
3
4
public IEnumerable<> GetProductList() {
    return from Product p in this.db.Products
              select new { Id = p.Id, Name = p.Name };
}
Daarvoor bestaat het concept 'view model', lijkt me zo.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sebazzz schreef op dinsdag 30 november 2010 @ 15:11:
[...]

Bijvoorbeeld in ASP.NET MVC, waarbij je een O/R mapper gebruikt en je in je DAL een repository hebt waarbij je bijvoorbeeld alleen IDs en productnamen wilt teruggeven:

C#:
1
2
3
4
public IEnumerable<> GetProductList() {
    return from Product p in this.db.Products
              select new { Id = p.Id, Name = p.Name };
}
Dan kan je toch een IEnumerable<Tuple<int, string>> returnen ;)

Het is natuurlijk nogal gek om een Anonymous type als return type te gebruiken in een strong typed language.

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

  • BM
  • Registratie: September 2001
  • Laatst online: 19:46

BM

Moderator Spielerij
C#:
1
2
3
4
5
public DateTime MaakEenMooieDateTime(dateTime datum)
{
  DateTime dt = new DateTime(datum.Year, datum.Month+1, 1);
  return dt;
}

Rara, wanneer gaat dat fout O-)

Hint: ongeveer vandaag :+
Note: niet mijn code! :p

[ Voor 5% gewijzigd door BM op 01-12-2010 14:16 ]

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 17:21
Een PHP'er die is begonnen aan C# :P ?

Daar kan het namelijk wel

PHP:
1
2
3
4
5
6
<?

$d=mktime(0,0,0,13,1,2010);
echo date('Y-m-d',$d);
// 2011-01-01
?>

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 05-10 23:22

CoolGamer

What is it? Dragons?

Ondanks er wel zo'n mooie AddMonths methode is, toch moeilijk doen :p.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
BM schreef op woensdag 01 december 2010 @ 14:16:
C#:
1
2
3
4
5
public DateTime MaakEenMooieDateTime(dateTime datum)
{
  DateTime dt = new DateTime(datum.Year, datum.Month+1, 1);
  return dt;
}

Rara, wanneer gaat dat fout O-)

Hint: ongeveer vandaag :+
Note: niet mijn code! :p
Ondanks dat sommigen onder ons wel eens een 13e maand uitbetaald krijgen, is het niet iets wat binnen de Gregoriaanse kalender bekend is.

Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

BarôZZa schreef op woensdag 01 december 2010 @ 14:30:
Een PHP'er die is begonnen aan C# :P ?

Daar kan het namelijk wel

PHP:
1
2
3
4
5
6
<?

$d=mktime(0,0,0,13,1,2010);
echo date('Y-m-d',$d);
// 2011-01-01
?>
Of JavaScript :)

Wat ook leuk is in javascript is (als verlengde van dit probleem):
- verhoog eerst de maand met 1
- zet dan de dag terug op 1
Deze gaat behoorlijk fout op de 31ste van de maand wanneer de volgende maand geen 31 dagen heeft.
31 maart + 1 maand wordt 31 april, Javascript helpt je en maakt daar maar even 1 mei van. Schuift je code de datum ineens 2 maanden op. Heeft me ooit behoorlijk wat tijd gekost om te debuggen (er trad raar gedrag op aan het einde van sommige maanden, nou ga dan maar eens zoeken). :+

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Ik wist niet dat dit in PHP kan, maar los van of het wel of niet kan vind ik het slechte om gebruik te maken van deze 'feature'.

@.Gertjan.: Een datum is één geheel, dus afzonderlijk onderdelen manipuleren lijkt mij niet handig. Ik zou dus - ongeacht programmeertaal en situatie - een datum inlezen in losse variabele(n) (in string, losse integers, of whatever), wijziging doorvoeren en vervolgens weer terugzetten.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

SvMp schreef op woensdag 01 december 2010 @ 15:21:
Ik wist niet dat dit in PHP kan, maar los van of het wel of niet kan vind ik het slechte om gebruik te maken van deze 'feature'.

@.Gertjan.: Een datum is één geheel, dus afzonderlijk onderdelen manipuleren lijkt mij niet handig. Ik zou dus - ongeacht programmeertaal en situatie - een datum inlezen in losse variabele(n) (in string, losse integers, of whatever), wijziging doorvoeren en vervolgens weer terugzetten.
Waarom, zeker met zoiets vervelends als datums, zelf het wiel opnieuw uitvinden? Wat als je bij 28 februari 1 dag wil optellen? Dan moet je dus weer een stuk code schrijven om te kijken of het een schrikkeljaar is.

Laat dat lekker aan je framework over.

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


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
CodeCaster schreef op woensdag 01 december 2010 @ 15:27:
[...]

Waarom, zeker met zoiets vervelends als datums, zelf het wiel opnieuw uitvinden? Wat als je bij 28 februari 1 dag wil optellen? Dan moet je dus weer een stuk code schrijven om te kijken of het een schrikkeljaar is.

Laat dat lekker aan je framework over.
Nou zo moeilijk wil ik het ook niet doen in de praktijk. Ik zou de datum omzetten naar bijvoorbeeld een Unix timestamp, daar wat bij optellen (voor een dag 24 x 60 x 60), en weer omzetten naar een datum. Als er een gemakkelijkere manier is, bijv. een framework, dan pak je die uiteraard. PHP biedt daar idd prima faciliteiten voor.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

SvMp schreef op woensdag 01 december 2010 @ 15:38:
Ik zou de datum omzetten naar bijvoorbeeld een Unix timestamp, daar wat bij optellen (voor een dag 24 x 60 x 60), en weer omzetten naar een datum.
Dan ga je er vanuit dat een dag altijd 24 uur is. In de praktijk heb je vaak 1x per jaar een dag van 23 uur en 1x per jaar een dag van 25 uur.

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!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:36
.oisyn schreef op woensdag 01 december 2010 @ 15:45:
[...]

Dan ga je er vanuit dat een dag altijd 24 uur is. In de praktijk heb je vaak 1x per jaar een dag van 23 uur en 1x per jaar een dag van 25 uur.
En dan laat je nog buiten beschouwing dat een jaar eigenlijk 365.25 dagen duurt of dat er zogenaamde schrikkelsecondes toegepast kunnen worden.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

En dan laat je nog buiten beschouwing dat een jaar eigenlijk 365.25 dagen duurt
Euh nee, dat doet er compleet niet toe, want je telt met hele dagen. Een kalenderjaar duurt nooit 365.25 dagen. De ene keer duurt ie 365 dagen, de andere keer 366.
of dat er zogenaamde schrikkelsecondes toegepast kunnen worden.
Worden die ook officieel meegenomen in unix timestamps dan? Ik dacht eerlijk gezegd dat ze gewoon opschoven.

.edit: yup, dat klopt idd.
Unix time, or POSIX time, is a system for describing points in time, defined as the number of seconds elapsed since midnight proleptic Coordinated Universal Time (UTC) of January 1, 1970, not counting leap seconds.
Observe that when a positive leap second occurs (i.e., when a leap second is inserted) the Unix time numbers repeat themselves. The Unix time number 915 148 800.50 is ambiguous: it can refer either to the instant in the middle of the leap second, or to the instant one second later, half a second after midnight UTC
In de praktijk betekent dat dus dat 1 januari 1970 0:00:00 UTC méér dan time() seconden geleden was, door de introductie van een handjevol schrikkelseconden in de loop der tijd.

[ Voor 56% gewijzigd door .oisyn op 01-12-2010 16:15 ]

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


Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Om echt precies te zijn :
quote: WikiPedia
De Gregoriaanse kalender heeft iets minder schrikkeldagen, en duurt gemiddeld 365,2425 dagen (365d 5u 49m 12s).

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: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

De regel is dan ook niet slechts om de 4 jaar, maar: om de 4 jaar wel, tenzij het deelbaar is door 100, en dat weer tenzij het deelbaar is door 400. Oftewel, 365 + 1/4 - 1/100 + 1/400 = 365.2425

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

En verder wordt er elk jaar besloten of er een seconde bij moet. Dat is helaas iets waar je niet zomaar rekening mee kunt houden.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

"Programma wordt steeds trager".
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   with qryfoo do
   begin
      close;
      sql.Clear;
      sql.Add(' select * ');
      sql.add('   from bar ');
      open;
      fetchall;
      record_code := recordcount + 1;

      close;
      sql.Clear;
      sql.add(' insert into bar ');
      sql.add('   select ');
      sql.add('   code = ' + inttostr(record_code) + ',');
      // knip
      try
         execsql;
      except
         logentry(); // knip
      end;
   end;


Tien seconden voor het invoegen van één record... :N

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


Acties:
  • 0 Henk 'm!

  • Otherside1982
  • Registratie: Februari 2009
  • Laatst online: 13:15
CodeCaster schreef op donderdag 02 december 2010 @ 15:20:
"Programma wordt steeds trager".
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   with qryfoo do
   begin
      close;
      sql.Clear;
      sql.Add(' select * ');
      sql.add('   from bar ');
      open;
      fetchall;
      record_code := recordcount + 1;

      close;
      sql.Clear;
      sql.add(' insert into bar ');
      sql.add('   select ');
      sql.add('   code = ' + inttostr(record_code) + ',');
      // knip
      try
         execsql;
      except
         logentry(); // knip
      end;
   end;


Tien seconden voor het invoegen van één record... :N
Mooi, dan hebben ze wellicht ook last van dubbele IDs, tenzij er nooit een record verwijderd wordt.
Wel simpel op te lossen natuurlijk: >:)
Delphi:
1
2
3
4
5
6
7
8
   with qryfoo do
   begin
      close;
      sql.Clear;
      sql.Add(' select count(*)+1 ');
      sql.add('   from bar ');
      open;
      record_code := Fields[0].AsInteger;

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
.oisyn schreef op woensdag 01 december 2010 @ 16:16:
De regel is dan ook niet slechts om de 4 jaar, maar: om de 4 jaar wel, tenzij het deelbaar is door 100, en dat weer tenzij het deelbaar is door 400. Oftewel, 365 + 1/4 - 1/100 + 1/400 = 365.2425
Ik vraag me ook wel eens af hoe het zit met zomer- en wintertijd.

Bij de wintertijd gaat de klok namelijk een uur achteruit, van 3:00 -> 2:00, waardoor het uur 2:00 -> 3:00 nog een keer wordt beleefd.

Als je nu een programma hebt dat om 2.59 oude tijd begint, 2 minuten runt en dus om 2:01 nieuwe tijd eindigt en je slaat de begin- en eindtijd op in een database (zonder volledige tijdzone-kwalificatie), dan heb je dus een programma dat 58 minuten eerder eindigt dan het tijdstip dat het begonnen is.

Is dat niet gek? Hebben mensen hier in de praktijk wel eens problemen mee gehad?

Ik heb zelf wel een keer een opzet gemaakt voor een logfile-scanner waar in logfiles de start- en eindtijden waren vermeld en waarin het programma keek of een gestart programma wel geëindigd was, maar ik heb dit programma niet af hoeven maken en dus deze ongein niet in hoeven programmeren.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Otherside1982 schreef op donderdag 02 december 2010 @ 15:33:
[...]

Mooi, dan hebben ze wellicht ook last van dubbele IDs, tenzij er nooit een record verwijderd wordt.
Wel simpel op te lossen natuurlijk: >:)
Delphi:
1
2
3
4
5
6
7
8
   with qryfoo do
   begin
      close;
      sql.Clear;
      sql.Add(' select count(*)+1 ');
      sql.add('   from bar ');
      open;
      record_code := Fields\[0].AsInteger;
Met count heb je natuurlijk hetzelfde, heb er even max(code) van gemaakt :)

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


Acties:
  • 0 Henk 'm!

  • Martijn Meijer
  • Registratie: April 2008
  • Laatst online: 13-08-2024
hallo mensen zit met een klein probleempje

Modbreak:Lees je voortaan dan eerst de topicwarning en FAQ even?

[ Voor 117% gewijzigd door MueR op 02-12-2010 16:28 ]


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 21:22
Dit is niet echt een hulp topic.

Maar ik zou
code:
1
document.writeln(prompt());
weghalen.

Verder lijkt het me huiswerk :P

Bij nader inzien; wat is de bedoeling?

[ Voor 14% gewijzigd door 418O2 op 02-12-2010 15:42 ]


Acties:
  • 0 Henk 'm!

  • DEiE
  • Registratie: November 2006
  • Laatst online: 29-09 16:32
CodeCaster schreef op donderdag 02 december 2010 @ 15:35:
[...]

Met count heb je natuurlijk hetzelfde, heb er even max(code) van gemaakt :)
Met count kan hij iig nog de index gebruiken, waardoor hij sneller is, maar max is natuurlijk de beste oplossing, ook door eerder genoemde opmerking over dubbele id's

[ Voor 38% gewijzigd door DEiE op 02-12-2010 15:43 . Reden: quote toegevoegd ]


Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

En als er nu 2 threads op hetzelfde moment willen inserten?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Het programma wordt gegarandeerd maar op één workstation gebruikt en wordt niet intensief gebruikt. Wel al een jaar of tien lang, dus vandaar dat de "select * " steeds trager wordt.

Een beetje vergelijkbaar met The Haunted Door :P

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


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
CodeCaster schreef op donderdag 02 december 2010 @ 15:47:
Het programma wordt gegarandeerd maar op één workstation gebruikt en wordt niet intensief gebruikt. Wel al een jaar of tien lang, dus vandaar dat de "select * " steeds trager wordt.
Gegarandeerd... totdat iemand het op een tweede workstation installeert, :+. Als het fout kan gaan, zal het, vroeg of laat, een keer fout gaan. Alhoewel het waarschijnlijk geen drama zal zijn als er een keer een dubbel ID in de DB voorkomt, dat zou je nog handmatig kunnen fixen. Tenzij het een niet-triviale applicatie is, dan zou je als een mongôl aan de alarmbel moeten trekken en voor €120/uur iemand als mij in moeten (laten) huren O-).

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Het kán vanwege bepaalde functionaliteit maar op één workstation gebruikt worden, omdat die functionaliteit alleen op die PC aanwezig is.

En tsja, wat nou als er straks twee mensen exact in dezelfde miliseconde de "select max(code)" uitvoeren... dan krijgt er ééntje een primary key constraint-error niet te zien omdat die niet wordt afgevangen en klikken ze gewoon nog een keer waarna het wel werkt.

Netjes defensief programmeren is het niet, maar het afvangen van deze enorm unlikely situatie zou zoiets zijn als één van de gaatjes in een vergiet dichtstoppen. Er zijn wel vervelender dingen aan de hand met deze code, en raad eens hoeveel tijd we krijgen om zulke dingen te fixen ... :)

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 07-10 19:27

Matis

Rubber Rocket

OMG, door een foutje van Google Calendar staan nu alle afspraken in de iframe-embedder van Google Calendar op maandag gepland. Zoals hier te zien valt. Ik was zelf al op hoge poten een mail aan het dichten naar de schrijven van de plugin, maar toen realiseerde ik me dat ik het ook eerst zelf kon testen. Wat bleek, de default embedded iframe-code doet het (gelukkig) ook fout.
Een mogelijkheid is om de dag-weergave of de agenda-weergave te gebruiken (die gaan beide wel goed), maar de maand-weergave is broken :'(

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


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat ik trouwens niet snap c.q. niet geloof aan dit verhaal... (voor de niet-ingewijden: het is een deur die niet altijd of niet direct lijkt te reageren op het presenteren van je toegangskaart).

spoiler:
Toen het systeem werd geïnstalleerd werkte het swipen direct. Kaart erdoor -> entry werd gelogd -> deur werd geopend.

Nu is het probleem dat er een vertraging van meer dan een dag tussen zit, doordat de logfile enorm groot is geworden en het schrijven naar de logfile dus vijftien seconden duurt. De hoofdrolspeler zit er 's avonds laat nog, en in het verhaal staat dat er entries van de vorige ochtend nog verwerkt werden. Laat ik voor het gemak 36 uur nemen, stel dat het acht uur 's avonds is. Dan stonden er zo'n 8640 entries in de wachtrij... is dat niet behoorlijk veel?

En stel dat het in het weekend rustiger is qua in- en uitcheckend personeel en dat de queue zondagmiddag dus zo'n beetje leeg is... hoe kwamen de mensen op maandagochtend dan binnen? Swipen en dan hopen dat de deur een keer open ging? Want in het verhaal lees ik dus dat het soms tot wel dertig seconden duurde... (En als het dan nog zo is als bij de flat van een vriend van me dat je na de "klik" zo'n twee seconden hebt om de deur open te rukken...) Dat ga je als bedrijf geen maandenlang accepteren.

[ Voor 13% gewijzigd door CodeCaster op 03-12-2010 10:22 ]

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


Acties:
  • 0 Henk 'm!

  • yade
  • Registratie: Mei 2002
  • Laatst online: 16-07 13:47
Ik geloofde het verhaal niet omdat er een stoffige pc stond die totaal niet beveiligd bleek te zijn waardoor hij met de logfiles kon rommelen.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Oh, die ben ik wel eens tegengekomen. Nota bene een pc die precies hetzelfde deed. "En je mag hem niet herstarten want dat komt hij niet meer op" LOLWUT

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


Acties:
  • 0 Henk 'm!

  • Thomaster94
  • Registratie: Mei 2010
  • Laatst online: 11-11-2024
Zoijar schreef op woensdag 01 oktober 2008 @ 16:54:
10 x = 0
20 poke 53281, x
30 x = x + 1
40 goto 20

en later werd het geloof ik zoiets

.A2000 LDX $D020
INX
STX $D020
JMP $2000

Mooie tijden. Toen waren er nog geen small portal hacks ;)
Is dit BASIC ? ziet er meer uit als assembly language, of ligt dat aan mij?

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 19:33
Dat eerste voorbeeld is BASIC, het tweede is assembly. :)

| 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

kenneth schreef op vrijdag 03 december 2010 @ 10:57:
Oh, die ben ik wel eens tegengekomen. Nota bene een pc die precies hetzelfde deed. "En je mag hem niet herstarten want dat komt hij niet meer op" LOLWUT
aan de zaak hebben wij er nog zo 1 staan een 286 >:) zit een speciale kaart in voor eproms. deze kan de eproms sneller branden dan een nieuwe usb programmer. 8)7

we durven dat ding niet uit te zetten iig niet zo lang dat iets tijd heeft om aftekoelen. (er moet wel eens hardware worden vervangen omdat hij nou toch wel erg slecht word)

Acties:
  • 0 Henk 'm!

  • Kaw
  • Registratie: Maart 2001
  • Laatst online: 03-09 20:24

Kaw

urk_forever schreef op zondag 28 november 2010 @ 15:53:
[...]


Ziet er bekend uit. Cursus programmeren met GeoMedia toevallig :)
Hahah! Ehm ja... Ik doe maar geen uitspraken over de bron ;)

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:47

Dido

heforshe

CodeCaster schreef op vrijdag 03 december 2010 @ 10:00:
Wat ik trouwens niet snap c.q. niet geloof aan dit verhaal...
Staat in die thread ook uitgelegd, maar zo lastig is het niet. Als er een lege queue is, duurt het openen van een deur, zeg, 15 seconden (inclusief het schrijven naar de enorme logfile). Doordat mensen gewend zijn vaker te swipen omdat ze ongeduldig zijn), kan je dus na 15 seconden 5 items op de queue hebben staan, als de eerste verwerkt is. Als er dan binnen 60 seconden (en dat kan prima op een maandagochtend als er een hoop mensen binnenkomen) opnieuw geswiped wordt, opent de deur niet voor die swipe, maar voor 1 van de vorige swipes die nog op de queue stonden.
De queue wordt dus heel snel groter, maar er wordt maximaal iedere 15 seconden een deur geopend. Als er een beetje wordt rondgelopen groeit die queue de hele dag door: niet omdat noodzakelijkerwijs iedere 15 seconden iemand door een deur wil, maar omdat genoeg mensen meerdere keren swipen in afwachting van "hun" deuropening.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 22:25

Patriot

Fulltime #whatpulsert

EddoH schreef op donderdag 02 december 2010 @ 15:45:
En als er nu 2 threads op hetzelfde moment willen inserten?
Dan eindigt het universum.
yade schreef op vrijdag 03 december 2010 @ 10:53:
Ik geloofde het verhaal niet omdat er een stoffige pc stond die totaal niet beveiligd bleek te zijn waardoor hij met de logfiles kon rommelen.
Dat kan best wel eens niet zo zijn geweest. TheDailyWTF maakt de verhalen altijd veel leuker dan ze zijn, niet iedereen die een verhaaltje instuurt kan zo'n mooi samenhangend verhaal tikken (en dan ook nog allemaal in dezelfde stijl ;)). Komt er dus op neer dat hij een machine tegenkwam die hem onbekend was als zijnde de machine die die deuren moest beheren. Het was waarschijnlijk geen stoffige kast achter een vuilnisemmer, dat klinkt echter wel veel leuker ;)

[ Voor 64% gewijzigd door Patriot op 04-12-2010 02:45 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:02
Eem specialist van IBM post code van een minimalisatische webserver: nweb: a tiny, safe Web server (static pages only). Zoek de vulnerability:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    static char buffer[BUFSIZE+1]; /* static so zero filled */
    int i, j, file_fd;

    /* hier code om e.g. "GET /foo/bar.html" in buffer in te lezen
       i is de positie van de 0-byte aan het einde van het pad
       nu gaan we het pad filteren zodat alleen files in de cwd geopend kunnen worden:
    */

    for(j=0;j<i-1;j++)  /* check for illegal parent directory use .. */
        if(buffer[j] == '.' && buffer[j+1] == '.')
            log(SORRY,"Parent directory (..) path names not supported",buffer,fd);

    if(( file_fd = open(&buffer[5],O_RDONLY)) == -1) /* open the file for reading */
        log(SORRY, "failed to open file",&buffer[5],fd);


En voor bonuspunten, waarom is deze sleep() toegevoegd en hoe hoor je dat wél op te lossen:
C:
1
2
3
4
5
6
7
8
    /* send file in 8KB block - last block may be smaller */
    while ( (ret = read(file_fd, buffer, BUFSIZE)) > 0 ) {
        (void)write(fd,buffer,ret);
    }
#ifdef LINUX
    sleep(1);   /* to allow socket to drain */
#endif
    exit(1);

Echt, wat een niveau, en dat voor iemand die als programmeur bij IBM werkt. 8)7

[ Voor 3% gewijzigd door Soultaker op 04-12-2010 10:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Checks op buffer[] lijken me niet helemaal koosjer.
C:
1
if(( file_fd = open(&buffer[5],O_RDONLY)) == -1)


Voor de bonuspunten: een socket zou geflush()t moeten worden?

[ Voor 91% gewijzigd door Verwijderd op 04-12-2010 10:54 ]


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 05-10 23:22

CoolGamer

What is it? Dragons?

Als je een request begint met twee '/' dan open je de map vanuit de root? Dus "//etc/file" haalt het bestand uit "/etc/file".

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dido schreef op vrijdag 03 december 2010 @ 19:09:
[...]

Staat in die thread ook uitgelegd, maar zo lastig is het niet. Als er een lege queue is, duurt het openen van een deur, zeg, 15 seconden (inclusief het schrijven naar de enorme logfile). Doordat mensen gewend zijn vaker te swipen omdat ze ongeduldig zijn), kan je dus na 15 seconden 5 items op de queue hebben staan, als de eerste verwerkt is. Als er dan binnen 60 seconden (en dat kan prima op een maandagochtend als er een hoop mensen binnenkomen) opnieuw geswiped wordt, opent de deur niet voor die swipe, maar voor 1 van de vorige swipes die nog op de queue stonden.
De queue wordt dus heel snel groter, maar er wordt maximaal iedere 15 seconden een deur geopend. Als er een beetje wordt rondgelopen groeit die queue de hele dag door: niet omdat noodzakelijkerwijs iedere 15 seconden iemand door een deur wil, maar omdat genoeg mensen meerdere keren swipen in afwachting van "hun" deuropening.
Het principe snap ik wel, maar het gaat me vooral om de de laatste zinnen van de laatste twee alinea's: dat 9000 enqueuings best veel is (al staat er natuurlijk niets over de grootte van het bedrijf), en dat een bedrijf dit niet kan accepteren. Er hoeft maar één bijdehand te zijn die z'n mond open trekt tijdens een vergadering of gewoon in het voorbijgaan tegen iemand die nog ongeveer weet hoe het systeem ooit is opgezet...

Maar zoals al gezegd, die verhalen worden altijd opgeleukt (pas zelfs gelezen van iemand die in zijn door Alex verbouwde verhaal zèlf belachelijk werd gemaakt), en er zal vast meer of iets anders aan de hand geweest zijn.

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


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:02
TheCoolGamer schreef op zaterdag 04 december 2010 @ 11:06:
Als je een request begint met twee '/' dan open je de map vanuit de root? Dus "//etc/file" haalt het bestand uit "/etc/file".
Bingo.
Verwijderd schreef op zaterdag 04 december 2010 @ 10:51:
Checks op buffer[] lijken me niet helemaal koosjer.
Ik heb wat code weggeknipt waardoor het niet helemaal duidelijk is, maar buffer overflows zaten er niet voor zover ik zo snel zag.
Voor de bonuspunten: een socket zou geflush()t moeten worden?
Min of meer, maar ik weet niet of je een socket kunt flushen. De kern van het probleem is dat als de laatste descriptor van een socket wordt gesloten met close() de TCP-connectie gereset wordt (met een TCP RST packet) en eventuele data in de uitgaande buffer dan verloren gaat.

De details zijn vrij complex. In dit geval zou het mis kunnen gaan doordat de filedescriptor in het child process met exit() wordt vrijgegeven (wat normaalgesproken wel lingert) maar in de parent process met close() (die niet lingert, tenzij je dat eerst instelt).

De eenvoudigste manier om dit correct op te lossen zonder een random hack als deze te introduceren is de schrijfzijde van de socket al uit te schakelen en dan te wachten tot de client hetzelfde doet aan zijn kant:
C:
1
2
3
4
5
6
shutdown(fd, SHUT_WR);
while ((ret = read(fd, buf, sizeof(buf)) != 0)
{
    if (ret < 0 && errno != EINTR) break;
}
close(fd);  /* of direct exit() */

Acties:
  • 0 Henk 'm!

Verwijderd

TheCoolGamer schreef op zaterdag 04 december 2010 @ 11:06:
Als je een request begint met twee '/' dan open je de map vanuit de root? Dus "//etc/file" haalt het bestand uit "/etc/file".
Scherp!

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Patriot schreef op zaterdag 04 december 2010 @ 02:38:
[...]


Dan eindigt het universum.


[...]


Dat kan best wel eens niet zo zijn geweest. TheDailyWTF maakt de verhalen altijd veel leuker dan ze zijn, niet iedereen die een verhaaltje instuurt kan zo'n mooi samenhangend verhaal tikken (en dan ook nog allemaal in dezelfde stijl ;)). Komt er dus op neer dat hij een machine tegenkwam die hem onbekend was als zijnde de machine die die deuren moest beheren. Het was waarschijnlijk geen stoffige kast achter een vuilnisemmer, dat klinkt echter wel veel leuker ;)
Ik denk dat de "stoffige kast achter een vuilnisemmer" ook meer een metafoor is voor hoe er met die computer werd omgegaan.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12:16

Haan

dotnetter

Misschien niet letterlijk slecht programmeren, maar toch een behoorlijke WTF: nieuws: Privégegevens 63.000 NEM-klanten liggen op straat

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 13:30
Haan schreef op maandag 06 december 2010 @ 15:00:
Misschien niet letterlijk slecht programmeren, maar toch een behoorlijke WTF: nieuws: Privégegevens 63.000 NEM-klanten liggen op straat
Ik snap niet dat mensen anno 2010 nog steeds geen wachtwoorden hashen en salts gebruiken. Zucht...

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


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 06-10 10:20

Janoz

Moderator Devschuur®

!litemod

CodeCaster schreef op zaterdag 04 december 2010 @ 11:09:
[...]

Het principe snap ik wel, maar het gaat me vooral om de de laatste zinnen van de laatste twee alinea's: dat 9000 enqueuings best veel is (al staat er natuurlijk niets over de grootte van het bedrijf), en dat een bedrijf dit niet kan accepteren. Er hoeft maar één bijdehand te zijn die z'n mond open trekt tijdens een vergadering of gewoon in het voorbijgaan tegen iemand die nog ongeveer weet hoe het systeem ooit is opgezet...

Maar zoals al gezegd, die verhalen worden altijd opgeleukt (pas zelfs gelezen van iemand die in zijn door Alex verbouwde verhaal zèlf belachelijk werd gemaakt), en er zal vast meer of iets anders aan de hand geweest zijn.
Ach, als het bedrijf maar groot genoeg is dan weet aan de ene kant niemand meer wie er verantwoordelijk is en aan de andere kant voelt ook niemand zich daadwerkelijk verantwoordelijk. Verder is het natuurlijk ook langzaam gegroeit waardoor er een soort van gewenning is ontstaan. Het is immers niet ineens van 0 naar 30sec gegaan.

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


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 06-10 10:20

Janoz

Moderator Devschuur®

!litemod

Freeaqingme schreef op maandag 06 december 2010 @ 15:44:
[...]


Ik snap niet dat mensen anno 2010 nog steeds geen wachtwoorden hashen en salts gebruiken. Zucht...
Ja, maar dit is toch veel makkelijker voor wanneer mensen hun wachtwoord vergeten zijn. Dan kunnen we ze zo hun wachtwoord opsturen....

[/sarcasme]

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Janoz schreef op maandag 06 december 2010 @ 15:47:
[...]
Ja, maar dit is toch veel makkelijker voor wanneer mensen hun wachtwoord vergeten zijn. Dan kunnen we ze zo hun wachtwoord opsturen....

[/sarcasme]
Die redenatie hebben ze hier in het bedrijf echt :'(. Het scheelt dat dat allemaal wel wachtwoorden zijn die gegenereerd zijn, en niet te veranderen, zodat de kans dat het een wachtwoord is die de klant ergens anders gebuikt wel een stuk kleiner is. Tevens staan de wachtwoorden op andere systemen die de wachtwoorden nodig hebben wel gehashed, maar in het "basis" systeem staan ze helaas wel gewoon clear-text.

Ik weiger wel pertinent om nieuwe systemen zo op te zetten, maar ik heb het er nog niet doorheen om het bestaande systeem aan te passen :'(

[ Voor 19% gewijzigd door Woy op 06-12-2010 15:53 ]

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

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12:16

Haan

dotnetter

Janoz schreef op maandag 06 december 2010 @ 15:47:
[...]


Ja, maar dit is toch veel makkelijker voor wanneer mensen hun wachtwoord vergeten zijn. Dan kunnen we ze zo hun wachtwoord opsturen....

[/sarcasme]
De Eneco doet het trouwens ook, daar was ik een tijdje terug m'n wachtwoord vergeten en toen kreeg ik het ook netjes gemaild, topservice d:)b

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Haan schreef op maandag 06 december 2010 @ 15:52:
[...]

De Eneco doet het trouwens ook, daar was ik een tijdje terug m'n wachtwoord vergeten en toen kreeg ik het ook netjes gemaild, topservice d:)b
Dat is handig, dan kan je de Eneco als een password "safe" gebruiken :'(. Het is logisch dat er een vorm van password retrieval moet zijn, maar IMHO de enige correcte manier is via het genereren van een (tijdelijk) nieuwe wachtwoord.

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

  • Slurpie
  • Registratie: Oktober 2004
  • Laatst online: 01-10 20:21
Janoz schreef op maandag 06 december 2010 @ 15:47:
[...]


Ja, maar dit is toch veel makkelijker voor wanneer mensen hun wachtwoord vergeten zijn. Dan kunnen we ze zo hun wachtwoord opsturen....

[/sarcasme]
Het zal je verbazen hoeveel projecten dat ik gezien heb en nog veel erger dat de klant het argument gebruikte dat het systeem gebruiksvriendelijker was dan..... :X

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 13:30
Janoz schreef op maandag 06 december 2010 @ 15:47:
[...]


Ja, maar dit is toch veel makkelijker voor wanneer mensen hun wachtwoord vergeten zijn. Dan kunnen we ze zo hun wachtwoord opsturen....
Yup. Vooral handig wanneer anderen mijn wachtwoord "vergeten"...

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


Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:36
Ik denk eerder dat zoiets is gedaan om de kosten te drukken. Uiteindelijk blijft de NEM een van de echte prijsvechters in Energie-land. Dat is hetzelfde als bij Online (ISP), waarbij je maar maximaal acht tekens mag gebruiken en dit wachtwoord daarna nog per brief thuiskrijgt...

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Altijd mooi, die wachtwoordverhalen. De site van m'n vorige werkgever waar je je loonstroken kon downloaden sloeg het wachtwoord ook plaintext op, en zoals het MySQL betaamt werd het wachtwoord niet-hoofdlettergevoelig (ci) vergeleken. Oh, en je mocht geen "vreemde tekens" gebruiken, eigenlijk alleen [A-Z,0-9]. 8)7

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 07-10 19:27

Matis

Rubber Rocket

CodeCaster schreef op maandag 06 december 2010 @ 16:26:
Altijd mooi, die wachtwoordverhalen. De site van m'n vorige werkgever waar je je loonstroken kon downloaden sloeg het wachtwoord ook plaintext op, en zoals het MySQL betaamt werd het wachtwoord niet-hoofdlettergevoelig (ci) vergeleken. Oh, en je mocht geen "vreemde tekens" gebruiken, eigenlijk alleen [A-Z,0-9]. 8)7
Soort van ING dus :') Alleen mag je daar dan wel weer "vreemde tekens" gebruiken, maar hoofdlettergevoelig is het wachtwoord niet. De gebruikersnaam daarentegen weer wel :') :'( :')

[ Voor 14% gewijzigd door Matis op 06-12-2010 16:29 ]

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


Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Ja, tenslotte bespaart een beperking van 8 tekens een hoop resources. :)
Dat kan je dan mooi weer gebruiken om die brief te sturen.

Maar er is inderdaad bespaart op de controle van de beveiliging. Hoop dat het klanten kost want het is natuurlijk verkeerde bezuiniging.

👑


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
CodeCaster schreef op maandag 06 december 2010 @ 16:26:
Altijd mooi, die wachtwoordverhalen. De site van m'n vorige werkgever waar je je loonstroken kon downloaden sloeg het wachtwoord ook plaintext op, en zoals het MySQL betaamt werd het wachtwoord niet-hoofdlettergevoelig (ci) vergeleken. Oh, en je mocht geen "vreemde tekens" gebruiken, eigenlijk alleen [A-Z,0-9]. 8)7
Wat heeft dat nou weer met MySQL te maken? Moeten ze maar een tinyblob oid gebruiken.
Als je wil ranten op MySQL; kom dan met valide argumenten (die zijn er zeker) :+

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 06-10 10:20

Janoz

Moderator Devschuur®

!litemod

Woy schreef op maandag 06 december 2010 @ 15:54:
Dat is handig, dan kan je de Eneco als een password "safe" gebruiken :'(. Het is logisch dat er een vorm van password retrieval moet zijn, maar IMHO de enige correcte manier is via het genereren van een (tijdelijk) nieuwe wachtwoord.
Wat heeft het voor f*cking zin om mensen een wachtwoord op te sturen dat ze toch al vergeten waren? Helaas wordt die vraag nooit echt gesteld.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Janoz schreef op maandag 06 december 2010 @ 16:48:
[...]

Wat heeft het voor f*cking zin om mensen een wachtwoord op te sturen dat ze toch al vergeten waren? Helaas wordt die vraag nooit echt gesteld.
Stel, dat ik thuis ben waar mijn ww standaard staat opgeslagen.
Als ik nou op het werk / ergens anders ben en dat ww niet meer weet. Dan is het wel fijn dat 'ie niet gewijzigd wordt.
Natuurlijk is het niet goed om ww plaintext op te slaan, maar handig vind ik het wel.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Gemak en veiligheid zijn inderdaad vrij snel vijanden.

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


Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Verwijderd schreef op maandag 06 december 2010 @ 17:05:
[...]

Stel, dat ik thuis ben waar mijn ww standaard staat opgeslagen.
Als ik nou op het werk / ergens anders ben en dat ww niet meer weet. Dan is het wel fijn dat 'ie niet gewijzigd wordt.
Natuurlijk is het niet goed om ww plaintext op te slaan, maar handig vind ik het wel.
Je kan dan toch als je weer op je werk thuis komt je wachtwoord weer terug wijzigen naar wat het was. (Of dat nou zo slim is weet ik niet, want je was 'em al vergeten :+ )

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Noxious schreef op maandag 06 december 2010 @ 16:33:
[...]

Wat heeft dat nou weer met MySQL te maken? Moeten ze maar een tinyblob oid gebruiken.
Als je wil ranten op MySQL; kom dan met valide argumenten (die zijn er zeker) :+
Ik wilde mijn post nog uitbreiden maar was al gequoted. :P

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


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 13:30
CodeCaster schreef op maandag 06 december 2010 @ 17:43:
Ik wilde mijn post nog uitbreiden maar was al gequoted. :P
Ik wacht nog steeds in spanning op je onderbouwing af :D

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


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

LOL, nee, niets ten nadele van MySQL ditmaal, een case-insensitive collation is standaard op zo'n beetje alle RDB's waar ik mee heb gewerkt.

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het ligt dan ook niet aan de RDBM, maar aan de persoon die de tabel heeft geconfigureerd.

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!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
alex3305 schreef op maandag 06 december 2010 @ 16:01:
Ik denk eerder dat zoiets is gedaan om de kosten te drukken. Uiteindelijk blijft de NEM een van de echte prijsvechters in Energie-land. Dat is hetzelfde als bij Online (ISP), waarbij je maar maximaal acht tekens mag gebruiken en dit wachtwoord daarna nog per brief thuiskrijgt...
Eh??

Wachtwoord opslaan als "md5(ww + salt)" is zoveel duurder als wachtwoord opslaan als "ww". dat je dit merkt in de prijs van de energie?

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik gok eerder dat ie bedoelt dat zij ook weer in zee gaan met een prijsvechter in IT-land die nou niet echt kwalitatief werk aflevert ;)

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!

  • graceful
  • Registratie: Maart 2008
  • Niet online
alex3305 schreef op maandag 06 december 2010 @ 16:01:
Ik denk eerder dat zoiets is gedaan om de kosten te drukken. Uiteindelijk blijft de NEM een van de echte prijsvechters in Energie-land. Dat is hetzelfde als bij Online (ISP), waarbij je maar maximaal acht tekens mag gebruiken en dit wachtwoord daarna nog per brief thuiskrijgt...
Klinkt als een wens van de opdrachtgever die heel simpel doorgevoerd is.

"We willen een brief kunnen sturen naar iedere klant"
- "Oh.. maar de wachtwoorden zijn salted"
"Uh??"
- "We maken wel een XLS" (hoppa, weg security, zop, klant blij..)
.. week later op Tweakers ..

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Ik kwam dit tegen in code, kan me geen situaties bedenken waarin dit nuttig is 8)7 :
C#:
1
Blachanged |= true;


Een |= zou volgens mij alleen nuttig zijn als je een false erachter hebt.

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
YakuzA schreef op dinsdag 07 december 2010 @ 12:28:
Ik kwam dit tegen in code, kan me geen situaties bedenken waarin dit nuttig is 8)7 :
C#:
1
Blachanged |= true;


Een |= zou volgens mij alleen nuttig zijn als je een false erachter hebt.
Lijkt op een turnstile die ik op de uni met het vak Logica wel eens tegenkwam, wat doet het precies?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het doet: Blachanged = Blachanged | true. Oftewel, Blachanged wordt gewoon true

[ Voor 57% gewijzigd door .oisyn op 07-12-2010 12:53 ]

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
YakuzA schreef op dinsdag 07 december 2010 @ 12:28:
Ik kwam dit tegen in code, kan me geen situaties bedenken waarin dit nuttig is 8)7 :
C#:
1
Blachanged |= true;


Een |= zou volgens mij alleen nuttig zijn als je een false erachter hebt.
C#:
1
2
3
4
5
Blachanged |= false;
// ==
Blachanged = Blachanged | false;
// ==
Blachanged = Blachanged;

Dus dat is ook niet echt nuttig, behalve als de get of set van de property nog wat doet.

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

&& en || zijn sowieso niet bijzonder nuttig als een van de operanden een constante is :) (even afgezien van debug code waarin je tijdelijk een conditie aan of juist uit wil zetten)

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom zijn er eigenlijk geen ||= en &&= operators :+

Ik snap dat er weinig nuttige toepassingen voor zouden zijn ;)

Al zou de volgende constructie nog wel handig zijn
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool ok;

ok = DoFoo();
ok &&= DoBar();
ok &&= DoOtherBar();
//ipv

bool ok;

ok = DoFoo();
if(ok)
{
  ok = DoBar();
}
if(ok)
{
  ok = DoOtherBar();
}

[ Voor 89% gewijzigd door Woy op 07-12-2010 13:29 ]

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

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Woy schreef op dinsdag 07 december 2010 @ 13:06:
[...]


C#:
1
2
3
4
5
Blachanged |= false;
// ==
Blachanged = Blachanged | false;
// ==
Blachanged = Blachanged;

Dus dat is ook niet echt nuttig, behalve als de get of set van de property nog wat doet.
Hmm true, het is alleen misschien nuttig als je binnen een loop iets met een bool doet waarvan je de waarde nog niet weet. Voor constantes is het vrij zinloos.
code:
1
2
3
4
bool x = false;
foreach(blalala){
  x |= DoSomeComplicatedAction(blalala);
}

[ Voor 3% gewijzigd door YakuzA op 07-12-2010 13:33 ]

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

C#:
1
2
3
4
if ((ok = DoFoo()) && (ok = DoBar()) && (ok = DoOtherBar()))
{
 // Niets
}

:P

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kenneth schreef op dinsdag 07 december 2010 @ 13:34:
C#:
1
2
3
4
if ((ok = DoFoo()) && (ok = DoBar()) && (ok = DoOtherBar()))
{
 // Niets
}

:P
Doe dan gewoon
C#:
1
ok = DoFoo() && DoBar() && DoOtherBar();

;)

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

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

kenneth schreef op dinsdag 07 december 2010 @ 13:34:
C#:
1
2
3
4
if ((ok = DoFoo()) && (ok = DoBar()) && (ok = DoOtherBar()))
{
 // Niets
}

:P
Is ook een manier om je functies uit te laten voeren.
Is het zo dat als DoFoo() niet ok is de rest ook niet uitgevoerd wordt? Dacht dat het in php zo werkte omdat het statement toch niet waar kan zijn als de eerste al niet waar is.

Edit:@woy Volgens mij zou het dan zo moeten worden:
C#:
1
2
3
4
if ((ok = DoFoo()) && (ok = DoBar()))
{
DoOtherBar()
}


Edit2: kleine edit in Edit1

[ Voor 16% gewijzigd door ajakkes op 07-12-2010 13:57 ]

👑


Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Woy schreef op dinsdag 07 december 2010 @ 13:26:
Waarom zijn er eigenlijk geen ||= en &&= operators :+

Ik snap dat er weinig nuttige toepassingen voor zouden zijn ;)

Al zou de volgende constructie nog wel handig zijn
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool ok;

ok = DoFoo();
ok &&= DoBar();
ok &&= DoOtherBar();
//ipv

bool ok;

ok = DoFoo();
if(ok)
{
  ok = DoBar();
}
if(ok)
{
  ok = DoOtherBar();
}
Die zijn er, maar dan als &= en |= en zijn ook erg handig bij bitmasks.

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
PiepPiep schreef op dinsdag 07 december 2010 @ 13:58:
[...]

Die zijn er, maar dan als &= en |= en zijn ook erg handig bij bitmasks.
Dat is toch wel wezenlijk verschillend. Bij de binary operators word de right hand side altijd uitgevoerd, terwijl dat bij de short circuit operator afhankelijk is van left hand side.
ajakkes schreef op dinsdag 07 december 2010 @ 13:53:
[...]
Is het zo dat als DoFoo() niet ok is de rest ook niet uitgevoerd wordt? Dacht dat het in php zo werkte omdat het statement toch niet waar kan zijn als de eerste al niet waar is.
Ja en dat is soms juist handig, omdat je bij een eventuele fout, bepaalde vervolg stappen niet uit zou willen voeren.
Edit:@woy Volgens mij zou het dan zo moeten worden:
C#:
1
2
3
4
if ((ok = DoFoo()) && (ok = DoBar()))
{
DoOtherBar()
}
Dat is niet het zelfde, want ok is dan true als DoOtherBar false oplevert. Misschien wil je verderop in de code dat result nog terug geven o.i.d.

[ Voor 49% gewijzigd door Woy op 07-12-2010 14:03 ]

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

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Woy schreef op dinsdag 07 december 2010 @ 14:00:
[..]

Ja en dat is soms juist handig, omdat je bij een eventuele fout, bepaalde vervolg stappen niet uit zou willen voeren.

[..]
Zoiets als dit werkt dan ook alleen met short-circuit:

C#:
1
2
3
4
if(obj != null && obj.someRandomIntProperty == 3)
{
    // do something
}


Als hij allebei altijd zou checken (geen short-circuit), zou je een nullpointer exception krijgen op de tweede vergelijking, nu dus niet.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

En aangezien VB vroeger niet aan shortcircuiting deed hebben ze in VB.NET twee nieuwe operators moeten toevoegen:

Visual Basic .NET:
1
If myVar = 1 AndAlso yourVar = 2 Then


En de mooiste:

Visual Basic .NET:
1
If billPayed = True OrElse ... Then

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22:16
Visual Basic .NET:
1
If billPayed = True OrElse SomethingWaves() 

:P

Acties:
  • 0 Henk 'm!

Verwijderd

Niet zozeer een slecht programmeer voorbeeld, maar ik vind dit wel een goed voorbeeld van slechte documentatie:

C++:
1
2
// Initialize CSV file pointer to NULL
this->csv_file_pointer = NULL;


Gee, really? Ya think?!

En ik moet stiekem toegeven dat 'ie nog van mij is ook :F

[ Voor 13% gewijzigd door Verwijderd op 08-12-2010 08:48 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Zelf getypt of laten genereren? :+

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

Helemaal zelf getyped :|

Zal wel 's avonds laat een keer geweest zijn.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Alex) schreef op woensdag 08 december 2010 @ 09:07:
code:
1
// type "Zelf getypt of laten genereren? :+"

Zelf getypt of laten genereren? :+
:+

Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 07-10 15:21
Woy schreef op dinsdag 07 december 2010 @ 13:26:
Waarom zijn er eigenlijk geen ||= en &&= operators :+
In Ruby is ||= er wel. ;) In Rails kan het handig zijn om een sessie te starten.

Ruby:
1
2
3
4
5
class ApplicationController
  def current_session
    @current_session ||= Session.new
  end
end


Heel simpel. Als current_session leeg is, maak dan een nieuwe sessie aan, anders de sessie returnen.
Pagina: 1 ... 43 ... 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. :)