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

Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Op werk in redelijk nieuwe code kwam ik dit tegen :
C#:
1
string Nu = DateTime.Today.Year.ToString() + "-" + DateTime.Today.Month.ToString().PadLeft(2, (char)48) + "-" + DateTime.Today.Day.ToString().PadLeft(2, (char)48);

Van iemand die al jaaaaaren programmeur is.

* mompelt iets over Format en in zo'n beetje iedere taal wel beschikbaar...

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: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat (char)48 ook :X

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

Zal vast een weddenschap zijn: Meest obscure code oid.

(char)48, hoe verzin je het?

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10 12:59
Misschien een beetje gezeik omdat de kans dat het voorkomt wel erg klein is, maar als deze code rond een maandovergang uitgevoerd wordt kan 'ie rare resultaten opleveren. Netter vind ik het om eenmalig de .Today uit te lezen en in een variabele te stoppen en dan de bewerking/uitvragingen uit te voeren.

In dit geval is dat natuurlijk totaal niet aan de orde en moet de programmeur netjes de formatteringsfunctionaliteit gebruiken, i.p.v. deze WTF op te leveren.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Verwijderd schreef op maandag 26 juli 2010 @ 15:10:
Zal vast een weddenschap zijn: Meest obscure code oid.

(char)48, hoe verzin je het?
Valt nog mee dat die "-" niet als char staat dan. 8)7

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 10:59
PiepPiep schreef op maandag 26 juli 2010 @ 14:59:
* mompelt iets over Format en in zo'n beetje iedere taal wel beschikbaar...
En de DateTime class heeft zelf nog eens standaard heel wat Format methods beschikbaar...
Ik moest zelfs even opzoeken welke het was :o dit ben ik echt nog nooit tegen gekomen, lol.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja dat weet ik dan weer uit m'n hoofd :X. Net als 65 voor 'A' en 97 voor 'a', 32 voor spatie, 13 en 10 voor CR LF, 9 voor tab en 8 voor backspace

[ Voor 62% gewijzigd door .oisyn op 26-07-2010 15:53 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

En 27 voor escape ;)

Waarom onthou ik zoiets al die jaren :X

Acties:
  • 0 Henk 'm!

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 12:22
Geen charcode, maar zo ken ik ook nog wel 0x33 als XOR en 0x90 als NOP :P

Acties:
  • 0 Henk 'm!

Verwijderd

He he he NOP was een bekende idd.

Een game die niet wil lukken? Even met TD32 de game in duiken, kijken waar de jump naar gameover zit en die eruit noppen, voor je het weet ben je onoverwinnelijk :D

offtopic:
En het hielp ook goed tegen kopieerbeveiliging
:+

Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 14:11

alienfruit

the alien you never expected

Niemand heeft VB for DOS gebruikt :) ?

Acties:
  • 0 Henk 'm!

Verwijderd

alienfruit schreef op dinsdag 27 juli 2010 @ 08:38:
Niemand heeft VB for DOS gebruikt :) ?
Ik in DOSBox nog ff mee gespeeld, vond het niet veel.

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Nu online

Salandur

Software Engineer

alienfruit schreef op dinsdag 27 juli 2010 @ 08:38:
Niemand heeft VB for DOS gebruikt :) ?
Ooit in het verleden, na wat met QuickBasic gestoeid te hebben, heb ik VB 2 gebruikt, maar die was al windows based, dus geen DOS variant helaas.

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Leuk zo'n website overnemen van een ander bedrijf
code:
1
<div id="homepage-welcome-screen-top" style="background-image: url({$helper->basehref}res/images/style_{$smarty.const.SITE_DESIGN}/homepage_logged_in/welcome_header.{if $smarty.const.SITE == 'LIVE'}gif{else}png{/if});"></div>

Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 12:58
De ASCII codes zitten er bij mij ook nog wel ingebakken. Veel gebruik van gemaakt in het QBASIC tijdperk met INKEY$ en CHR$.

Destijds kende ik het begrip array ook nog niet eens(ik was toen pakweg 10 jaar, ASCII programmeersels deed ik toen ik 6 was in BASIC op de Commodore 64), waardoor ik games/demo's programmeerde (space invaders clone, top down games) met tientallen of honderden variabelen schreef :+ . Voor elke vijand bijvoorbeeld drie integers. Van SUB functies maakte ik ook weinig gebruik, gewoon enorme loops maken met GOTO's.

Commodore BASIC was ook een rotzooitje.

Begon ik met
10 PRINT "bla"
20 INPUT "bla",I$

en dan ging ik later lijnen 11 tm 19 toevoegen, met de : meerdere commands op 1 lijn krijgen en uiteindelijk maar eens RENUMBER gebruiken.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 15:37
Megamind schreef op woensdag 28 juli 2010 @ 16:07:
Leuk zo'n website overnemen van een ander bedrijf
code:
1
<div id="homepage-welcome-screen-top" style="background-image: url({$helper->basehref}res/images/style_{$smarty.const.SITE_DESIGN}/homepage_logged_in/welcome_header.{if $smarty.const.SITE == 'LIVE'}gif{else}png{/if});"></div>
Leuk zon URL.. Waarom gebruikt de "LIVE" site .gif en als die "test" (???) is .png?

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Caelorum schreef op woensdag 28 juli 2010 @ 17:21:
[...]

Leuk zon URL.. Waarom gebruikt de "LIVE" site .gif en als die "test" (???) is .png?
Och als dat het enige was :P

Acties:
  • 0 Henk 'm!

Verwijderd

Smarty... :N Daar heb ik nou nooit het nut van in gezien. :+

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 10:59
Eergisteren kreeg ik een stukje code voor ogen, waarin ze enkele variabelen met "mooning" (met voorvoegselen etc) in. In comment stond helemaal bovenaan dat "mooning" een typfout was, het moet "mooring" zijn. Men had blijkbaar helemaal in het begin van het project een typfout gemaakt en het gewoon laten staan "omdat het te veel werk zou zijn om aan te passen".

Refactoring of simpelweg find/replace doen, is blijkbaar nogal moeilijk. :+

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 14:53
Heeft dat project met scheepvaart te maken? Waarom 'mooring'? Afmeren?

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Styxxy schreef op woensdag 28 juli 2010 @ 18:08:
Refactoring of simpelweg find/replace doen, is blijkbaar nogal moeilijk. :+
Dat kan tegenvallen afhankelijk van de manier waarop geprogrammeerd is. De meeste refactor tools nemen geen reflection en dergelijke mee.

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


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
Verwijderd schreef op woensdag 28 juli 2010 @ 17:58:
Smarty... :N Daar heb ik nou nooit het nut van in gezien. :+
mwoah, er is wel mee te werken hoor, maar ideaal is het zeker niet.

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 10:59
rutgerw schreef op woensdag 28 juli 2010 @ 19:16:
Heeft dat project met scheepvaart te maken? Waarom 'mooring'? Afmeren?
Jep :) het heeft inderdaad met scheepvaart te maken :).
Sebazzz schreef op woensdag 28 juli 2010 @ 20:23:
[...]
Dat kan tegenvallen afhankelijk van de manier waarop geprogrammeerd is. De meeste refactor tools nemen geen reflection en dergelijke mee.
Ik denk niet dat een PHP website zo veel problemen kunnen leveren :). Zeker niet de scripting ervan, was bijna plain-old PHP :P een find/replace was genoeg geweest denk ik.

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
Ik HAAT het trouwens als er spelfouten in class/attribuutnamen zitten. Verbeter het dan even, aargh

Acties:
  • 0 Henk 'm!

  • plofkip
  • Registratie: Oktober 2002
  • Laatst online: 29-09 20:13
418O2 schreef op woensdag 28 juli 2010 @ 21:14:
Ik HAAT het trouwens als er spelfouten in class/attribuutnamen zitten. Verbeter het dan even, aargh
Ja of dat de caps niet kloppen, bv:
C#:
1
public string ikDoeNietAanBeginHoofdletterVoorProperties;

Acties:
  • 0 Henk 'm!

  • Stoffel
  • Registratie: Mei 2001
  • Laatst online: 01-10 14:49

Stoffel

Engineering the impossible

kipusoep schreef op woensdag 28 juli 2010 @ 21:20:
[...]

Ja of dat de caps niet kloppen, bv:
C#:
1
public string ikDoeNietAanBeginHoofdletterVoorProperties;
Blijkbaar ook niet aan properties ;)

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:22

Matis

Rubber Rocket

Stoffel schreef op woensdag 28 juli 2010 @ 21:28:
Blijkbaar ook niet aan properties ;)
_O_ Great minds think alike :D

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


Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 15:48

Twazerty

AVCHDCoder developer

kipusoep schreef op woensdag 28 juli 2010 @ 21:20:
[...]

Ja of dat de caps niet kloppen, bv:
C#:
1
public string ikDoeNietAanBeginHoofdletterVoorProperties;
het is dat dit binnen java weer wel gebruikelijk is :)

Ik kwam paar maanden geleden ook een vreselijks tegen in mn eigen code (code heb ik niet meer maar dit is ter illustratie):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
String code = "";
if(type.equals("a")){
 code = object.getLetter() + object2.getCode();
}else if(type.equals("b")){
 code = object.getLetter() + object2.getCode();
}else if(type.equals("c")){
 code = object.getLetter() + object2.getCode();
}else if(type.equals("d")){
 code = object.getLetter() + object2.getCode();
}else if(type.equals("e")){
 code = object.getLetter() + object2.getCode() + object3.doeNogWat();
}


Dat werd uiteraard vervangen door:
Java:
1
2
3
4
String code = object.getLetter() + object2.getCode();
if(type.equals("e")){
 code += object3.doeNogWat();
}


Ter info: er werd ten alle tijde 1 van de 5 if statements uitgevoerd. Oftewel het was allemaal heel erg dubbelop. Ik merkte het toen ik meer types ging toevoegen. Dat zag er wel effe smerig uit :9

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
C#:
1
2
3
4
5
6
private string m_achternaam;
public string Achternaam
{
    get { return m_achternaam; }
    set { m_achternaam = value; }
}


Als ik dat soort dingen tegenkom, doe ik heel vaak met ReSharper de optie "Replace with automatic property". Het is slechts syntactic sugar, maar het maakt de code meteen een stuk prettiger te lezen, vind ik.

Sowieso: Hungarian, meh. En prefixes als m_, c_, enzovoorts.

[ Voor 8% gewijzigd door Alex) op 28-07-2010 21:42 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
CTRL + R, E

in Visual Studio :)

Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 10:59
kipusoep schreef op woensdag 28 juli 2010 @ 21:20:
[...]
Ja of dat de caps niet kloppen, bv:
C#:
1
public string ikDoeNietAanBeginHoofdletterVoorProperties;
Ach, dat ben ik al meer tegen gekomen hoor :P. Zelfs een docent vorig jaar, ze gaf les over enumeraties en de velden/values van een Enum (in C#) moeten uiteraard ook met hoofdletter beginnen. Ze gaf daar een hele preek over in de les en dan opende ze haar code voorbeelden (door haar gemaakt)... wat zien we daar: jawel, de values van al haar Enums zijn toevallig toch met kleine letters. Excuus: "is nog een oud code voorbeeld" :X lol.

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Nu online
ach, het is een illusie om te denken dat al je eigen code perfect is natuurlijk.

Ik zie soms code van een half jaar oud wat ik toch even móet herschrijven omdat ik het nu anders/beter doe. Hou je toch.

Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Caelorum schreef op zondag 25 juli 2010 @ 09:29:
[...]

Met dank daarvoor ^^
Ook al twijfelde ik aan dat commentaar, want zo'n woordje "inherit" staat er natuurlijk niet zomaar en als je dan nergens opgeeft wat die moet overnemen..
Dat geef je nooit zelf op maar zoekt JavaDoc voor je uit. Daarom kan 't onmogelijk iets zinnigs doen bij een private method.

Overigens vind ik /** @inheritDoc */ in geval van een override toch al een zwaktebod. JavaDoc doet dat overnemen nl. automatisch al (ook in een IDE als Eclipse). Dus eigenlijk vertel je alleen de medelezers van de code dat je een override doet. Gebruik dan @Override, dan vertel je het gelijk ook de compiler en de syntax checker in je IDE :). (N.B. voor implementeren van een interface method kan dat pas vanaf java 6. In java 5 moet je het dan inderdaad maar met /** @inheritDoc */ doen.)

Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Alex) schreef op woensdag 28 juli 2010 @ 21:42:
C#:
1
2
3
4
5
6
private string m_achternaam;
public string Achternaam
{
    get { return m_achternaam; }
    set { m_achternaam = value; }
}


Als ik dat soort dingen tegenkom, doe ik heel vaak met ReSharper de optie "Replace with automatic property". Het is slechts syntactic sugar, maar het maakt de code meteen een stuk prettiger te lezen, vind ik.

Sowieso: Hungarian, meh. En prefixes als m_, c_, enzovoorts.
ReSharper is inderdaad een must have, jammer dat het Visual Studio echt behoorlijk traag maakt.

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Phyxion schreef op woensdag 28 juli 2010 @ 22:13:
[...]

ReSharper is inderdaad een must have, jammer dat het Visual Studio echt behoorlijk traag maakt.
Bijna net zo erg om dan twee aparte methodes te schrijven voor get en set.

Ik gebruik properties vaak voor Forms met een tekstveld.

C#:
1
2
3
4
5
public string Name
{
   get { return this.textBoxName.Text; }
   set { this.textBoxName.Text = value; }
}

Acties:
  • 0 Henk 'm!

Verwijderd

Alex) schreef op woensdag 28 juli 2010 @ 21:42:
C#:
1
2
3
4
5
6
private string m_achternaam;
public string Achternaam
{
    get { return m_achternaam; }
    set { m_achternaam = value; }
}


Als ik dat soort dingen tegenkom, doe ik heel vaak met ReSharper de optie "Replace with automatic property". Het is slechts syntactic sugar, maar het maakt de code meteen een stuk prettiger te lezen, vind ik.

Sowieso: Hungarian, meh. En prefixes als m_, c_, enzovoorts.
Ach ja, je moet gewoon denken: iedereen heeft zo z'n stijl en niemands stijl is perfect.

Trouwens zijn die Automatic properties wel handig. Ik was ze nog niet eerder tegengekomen (maar het schijnt iets nieuws uit C# 3.0 te zijn, waar ik direct van 2.0 naar 4.0 ging)

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Er zijn zoveel handige nieuwe dingen sinds .NET 3.0. Lambda expressions, LINQ, automatic properties, extension methods, implicit operators, enzovoorts.

C#:
1
2
3
4
5
6
7
8
9
10
11
var cookieJar = new List<Cookie>();


var mijnObject = new Cookie() { Flavor = Flavors.ChocolateChip,
                                CookieNommed += (s, e) => { Debug.WriteLine(string.Format("Cookie {0} was eaten!", ((Cookie)s).Flavor)); }
}

cookieJar.Add(mijnObject);

var notEatenCookies = cookieJar.Where(c => c.Status == CookieStatus.NotEaten);
notEatenCookies.Select(cookie => cookie.Eat());


Mooi hea? :+ (Even uit de losse pols geschud)

Dat kun je ook zo schrijven:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
List<Cookie> cookieJar = new List<Cookie>();


Cookie mijnObject = new Cookie();
mijnObject.Flavor = Flavors.ChocolateChip;
mijnObject.CookieNommed += mijnObject_CookieNommed;

cookieJar.Add(mijnObject);

List<Cookie> notEatenCookies = new List<Cookie>();
foreach(Cookie c in cookieJar)
{
    if(c.Status == CookieStatus.NotEaten)
    {
        notEatenCookies.Add(c);
    }
}

foreach(Cookie c2 in notEatenCookies)
{
    c2.Eat();
}

void mijnObject_CookieNommed(object sender, CookieEatenEventArgs e)
{
    Debug.WriteLine(string.Format("Cookie {0} was eaten!", ((Cookie)s).Flavor));
}

[ Voor 43% gewijzigd door Alex) op 26-06-2011 23:05 . Reden: typo gefixt. ]

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

Alex) schreef op woensdag 28 juli 2010 @ 21:42:
Sowieso: Hungarian, meh. En prefixes als m_, c_, enzovoorts.
Niets mis met Hungarian, probleem is alleen dat veel mensen het niet vatten.

http://www.joelonsoftware.com/articles/Wrong.html

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 25-09 15:21

pieturp

gaffa!

Verwijderd schreef op donderdag 29 juli 2010 @ 01:59:
[...]

Niets mis met Hungarian, probleem is alleen dat veel mensen het niet vatten.

http://www.joelonsoftware.com/articles/Wrong.html
Gaan we weer... :N

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 28 juli 2010 @ 23:12:
Trouwens zijn die Automatic properties wel handig. Ik was ze nog niet eerder tegengekomen (maar het schijnt iets nieuws uit C# 3.0 te zijn, waar ik direct van 2.0 naar 4.0 ging)
Automatic implemented properties was 1 van de dingen die (omdat ze pure syntactic sugar zijn) die ook in .Net 2.0 projecten werkten mits VS2008:
Using C# 3 in .NET 2.0 and 3.0
Some C# 3 features can be used freely in .NET 2.0...<snip>
Fully available features:
Automatically implemented properties...<snip>

[ Voor 5% gewijzigd door RobIII op 29-07-2010 03:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Verwijderd schreef op woensdag 28 juli 2010 @ 23:12:
[...]

Ach ja, je moet gewoon denken: iedereen heeft zo z'n stijl en niemands stijl is perfect.
Lijkt me toch wel handig om zo veel mogelijk aan de stijl en conventies te houden van de taal of framework waarmee je werkt .

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


Acties:
  • 0 Henk 'm!

Verwijderd

Alex) schreef op woensdag 28 juli 2010 @ 23:32:
Er zijn zoveel handige nieuwe dingen sinds .NET 3.0. Lambda expressions, LINQ, automatic properties, extension methods, implicit operators, enzovoorts.

C#:
1
2
3
4
5
6
7
8
9
10
11
var cookieJar = new List<Cookie>();


var mijnObject = new Cookie() { Flavor = Flavors.ChocolateChip,
                                CookieNommed += (s, e) => { Debug.WriteLine(string.Format("Cookie {0} was eaten!", ((Cookie)s).Flavor)); }
}

cookieJar.Add(mijnObject);

var eatenCookies = cookieJar.Where(c => c.Status == CookieStatus.NotEaten);
eatenCookies.Select(cookie => cookie.Eat());


Mooi hea? :+ (Even uit de losse pols geschud)

Dat kun je ook zo schrijven:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
List<Cookie> cookieJar = new List<Cookie>();


Cookie mijnObject = new Cookie();
mijnObject.Flavor = Flavors.ChocolateChip;
mijnObject.CookieNommed += mijnObject_CookieNommed;

cookieJar.Add(mijnObject);

List<Cookie> eatenCookies = new List<Cookie>();
foreach(Cookie c in cookieJar)
{
    if(c.Status == CookieStatus.NotEaten)
    {
        eatenCookies.Add(c);
    }
}

foreach(Cookie c2 in eatenCookies)
{
    c2.Eat();
}

void mijnObject_CookieNommed(object sender, CookieEatenEventArgs e)
{
    Debug.WriteLine(string.Format("Cookie {0} was eaten!", ((Cookie)s).Flavor));
}
Ja die trucage ken ik al, alleen vind ik het niet beter leesbaar :p
RobIII schreef op donderdag 29 juli 2010 @ 03:15:
[...]

Automatic implemented properties was 1 van de dingen die (omdat ze pure syntactic sugar zijn) die ook in .Net 2.0 projecten werkten mits VS2008:

[...]
Dat moet je ook wel even weten ;)

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Sebazzz schreef op donderdag 29 juli 2010 @ 08:54:
[...]

Lijkt me toch wel handig om zo veel mogelijk aan de stijl en conventies te houden van de taal of framework waarmee je werkt .
Ja, d'r is zo'n kreet "Don't fight the IDE" wat hier ongeveer wel op slaat.

Als ik een klasse schrijf, probeer ik dat soms te doen alsof Microsoft het zelf heeft geschreven.

En Hungarian is niet per definitie slecht als je weet dat het gebruikt moet worden om onderscheid te maken tussen objecten van hetzelfde type die iets anders bevatten dan tussen objecten van verschillende types.

Zo gaf de bedenker volgens mij een voorbeeld van 2 strings waarvan er één escaped (safe) was en een ander niet.
Het is met moderne IDEs echter geen probleem om hele namen te gebruiken omdat je die niet elke keer opnieuw hoeft te typen. En het maakt het een stuk duidelijker voor derden.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 15:37
Verwijderd schreef op donderdag 29 juli 2010 @ 09:02:
[...]
Ja die trucage ken ik al, alleen vind ik het niet beter leesbaar :p
Dat lijkt me meer een kwestie van het leren lezen van deze "vorm" van code. Lijkt een beetje op het leren lezen van een (andere) muzieknotatie (dan je gewend bent)

Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Verwijderd schreef op donderdag 29 juli 2010 @ 09:02:
Ja die trucage ken ik al, alleen vind ik het niet beter leesbaar :p
Ik vind het juist een stuk beter leesbaar, nu zie je in één oogopslag wat er gebeurd zonder dat je eerst moet kijken wat er nog in de for en foreach gedaan wordt.

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:47

Haan

dotnetter

Ik vind het lezen van lambdas in C# nog altijd wel lastig.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Stoffel
  • Registratie: Mei 2001
  • Laatst online: 01-10 14:49

Stoffel

Engineering the impossible

Haan schreef op donderdag 29 juli 2010 @ 10:06:
Ik vind het lezen van lambdas in C# nog altijd wel lastig.
Het debuggen is pas lastig, dat vind ik echt een enorm nadeel van die anderszins mooie techniek.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

ís het daadwerkelijk lastig? Is het niet gewoon een kwestie van zorgen dat je de statements in de lambda hun eigen regel geeft?

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!

  • basvd
  • Registratie: December 2007
  • Laatst online: 26-09 21:04
Rommel2
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    $bloks_allowed("categories_main","categories","also_purchased");
    /**
     * Nog meer rommel...
     */
    if (USE_CACHE == 'true' && $bloks_allowed[$blok]) { 
        switch($blok) {
            case "categories_main":
                tep_reset_cache_block('categories_main');
                break;
            case "categories":
                tep_reset_cache_block('categories');
                break;
            case "also_purchased":
                tep_reset_cache_block('also_purchased');
                break;
            default:
                die();
        }
    }

[ Voor 8% gewijzigd door basvd op 29-07-2010 12:10 ]


Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22
Ik zal jullie de code besparen (heb ik ook niet meer), maar ik heb ook een functie geschreven die met een tweede SQL-query de laatst ingevoegde entry ophaalt. Totdat ik mysql_insert_id() leerde kennen :+.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 15:10
basvd schreef op donderdag 29 juli 2010 @ 12:04:
Rommel2
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    $bloks_allowed("categories_main","categories","also_purchased");
    /**
     * Nog meer rommel...
     */
    if (USE_CACHE == 'true' && $bloks_allowed[$blok]) { 
        switch($blok) {
            case "categories_main":
                tep_reset_cache_block('categories_main');
                break;
            case "categories":
                tep_reset_cache_block('categories');
                break;
            case "also_purchased":
                tep_reset_cache_block('also_purchased');
                break;
            default:
                die();
        }
    }
In eerste instantie dacht ik ' he daar is toch niet zo heel veel geks aan de hand ' tot ik die switch zag...

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Haan schreef op donderdag 29 juli 2010 @ 10:06:
Ik vind het lezen van lambdas in C# nog altijd wel lastig.
Hoezo? Het is gewoon een anonieme methode.
(argumenten) => methode-body

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


Acties:
  • 0 Henk 'm!

  • lier
  • Registratie: Januari 2004
  • Laatst online: 14:03

lier

MikroTik nerd

Stephan4kant schreef op donderdag 29 juli 2010 @ 12:25:
Ik zal jullie de code besparen (heb ik ook niet meer), maar ik heb ook een functie geschreven die met een tweede SQL-query de laatst ingevoegde entry ophaalt. Totdat ik mysql_insert_id() leerde kennen :+.
Bedoel je zoiets als de @@identity (als je deze tijdens je insert laat zetten, weet je gelijk wat het identity van de row is) van SQL Server !?

Eerst het probleem, dan de oplossing


Acties:
  • 0 Henk 'm!

  • basvd
  • Registratie: December 2007
  • Laatst online: 26-09 21:04
Webgnome schreef op donderdag 29 juli 2010 @ 12:26:
[...]


In eerste instantie dacht ik ' he daar is toch niet zo heel veel geks aan de hand ' tot ik die switch zag...
Deze stond er trouwens ook nog in:
PHP:
1
2
3
DEFINE('USE_CACHE',true);

if (USE_CACHE == 'true' && $bloks_allowed[$blok]) {

*zucht*, lang leven het type juggling van PHP ;)

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

lier schreef op donderdag 29 juli 2010 @ 12:34:
[...]

Bedoel je zoiets als de @@identity (als je deze tijdens je insert laat zetten, weet je gelijk wat het identity van de row is) van SQL Server !?
Jep, het zijn dezelfde principes.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 14:56

RayNbow

Kirika <3

Haan schreef op donderdag 29 juli 2010 @ 10:06:
Ik vind het lezen van lambdas in C# nog altijd wel lastig.
Pfft, I eat lambdas for breakfast O-)

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Program
{
    static void Main(string[] args)
    {
        Func<dynamic, dynamic, Func<Func<dynamic, dynamic, dynamic>, dynamic>> pair = (x, y) => f => f(x, y);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> fst = p => p((x, y) => x);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> snd = p => p((x, y) => y);
        {
            // nieuwe scope, omdat anders de C# compiler gaat zeuren over 'p' 8)7
            dynamic p = pair(1, 2);
            Console.WriteLine(fst(p));
            Console.WriteLine(snd(p));
            Console.ReadKey();
        }
    }
}

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mja, ik weet het omdat het destijds (bij introductie van het .Net framework of VS2008, ik weet even niet meer welke van de twee) er in een video ergens op Channel9 geloof ik wat over gezegd werd en die Automatic implemented properties werden werkelijk overal opgehemeld (terecht overigens) en dus ook icm. 2.0 projecten. Je moet haast onder een steen geleefd hebben om dat niet meegekregen te hebben. Then again kijk ik misschien teveel video's :P

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
RayNbow schreef op donderdag 29 juli 2010 @ 14:46:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Program
{
    static void Main(string[] args)
    {
        Func<dynamic, dynamic, Func<Func<dynamic, dynamic, dynamic>, dynamic>> pair = (x, y) => f => f(x, y);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> fst = p => p((x, y) => x);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> snd = p => p((x, y) => y);
        {
            // nieuwe scope, omdat anders de C# compiler gaat zeuren over 'p' 8)7
            dynamic p = pair(1, 2);
            Console.WriteLine(fst(p));
            Console.WriteLine(snd(p));
            Console.ReadKey();
        }
    }
}
16:56 <@RayNbow> valhallasw: bonuspunten als jij of valhallasw_ een Python
versie in het topic post :+
Python:
1
2
3
4
5
6
7
8
>>> pair = lambda x,y: lambda f: f(x,y)
>>> fst = lambda p: p(lambda x,y: x)
>>> snd = lambda p: p(lambda x,y: y)
>>> p = pair(1,2)
>>> fst(p)
1
>>> snd(p)
2


Stuk leesbaarder dan de C#-versie, moet ik zeggen :p


en voor de mensen die niet snappen wat er staat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
>>> def pair(x,y):
...   def tmp(f):
...     return f(x,y)
...   return tmp
...
>>> def fst(p):
...   def tmp(x,y):
...     return x
...   return p(tmp)
...
>>> fst(pair(1,2))
1

[ Voor 10% gewijzigd door ValHallASW op 29-07-2010 17:07 ]


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 12:58
Stephan4kant schreef op donderdag 29 juli 2010 @ 12:25:
Ik zal jullie de code besparen (heb ik ook niet meer), maar ik heb ook een functie geschreven die met een tweede SQL-query de laatst ingevoegde entry ophaalt. Totdat ik mysql_insert_id() leerde kennen :+.
Die heeft iedereen toch wel eens gedaan? Werkt prima in de meeste gevallen ;)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 10:15
In de meeste gevallen wel ja: zoek bijvoorbeeld op 2 items waarvan je *dacht* dat ze uniek waren, en je collega zoekt zich kleurenblind als er nog een 3e nodig was voor uniek :( Veel ervaring daarin met een website die recent is vervangen door een nieuwe O-)

[ Voor 34% gewijzigd door MBV op 29-07-2010 19:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

RobIII schreef op donderdag 29 juli 2010 @ 16:38:
[...]

Mja, ik weet het omdat het destijds (bij introductie van het .Net framework of VS2008, ik weet even niet meer welke van de twee) er in een video ergens op Channel9 geloof ik wat over gezegd werd en die Automatic implemented properties werden werkelijk overal opgehemeld (terecht overigens) en dus ook icm. 2.0 projecten. Je moet haast onder een steen geleefd hebben om dat niet meegekregen te hebben. Then again kijk ik misschien teveel video's :P
Ik vind videos over programmeertalen nogal saai :p

Maar ik heb me vandaag over dat hele lambda gebeuren even ingelezen. En ook al wat ervan in m'n framework verwerkt. Dus je kan binnenkort enkele Updates op mn blog verwachten :+

[ Voor 12% gewijzigd door Verwijderd op 29-07-2010 22:14 ]


Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
Stephan4kant schreef op donderdag 29 juli 2010 @ 12:25:
Ik zal jullie de code besparen (heb ik ook niet meer), maar ik heb ook een functie geschreven die met een tweede SQL-query de laatst ingevoegde entry ophaalt. Totdat ik mysql_insert_id() leerde kennen :+.
|:( Die kende ik nog niet, bedankt :P

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Hoeveel werken jullie met stored procedures? Hier werken we alleen maar met Firebird, en SP's gaan hier soms echt te ver met switches, if else constructies etc. Soms is het dan ook echt vreemd kijken als een stuk code niet werkt omdat er vanalles in de SP gedaan wordt...

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 14:56

RayNbow

Kirika <3

RayNbow schreef op donderdag 29 juli 2010 @ 14:46:
[...]

Pfft, I eat lambdas for breakfast O-)

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Program
{
    static void Main(string[] args)
    {
        Func<dynamic, dynamic, Func<Func<dynamic, dynamic, dynamic>, dynamic>> pair = (x, y) => f => f(x, y);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> fst = p => p((x, y) => x);
        Func<Func<Func<dynamic, dynamic, dynamic>, dynamic>, dynamic> snd = p => p((x, y) => y);
        {
            // nieuwe scope, omdat anders de C# compiler gaat zeuren over 'p' 8)7
            dynamic p = pair(1, 2);
            Console.WriteLine(fst(p));
            Console.WriteLine(snd(p));
            Console.ReadKey();
        }
    }
}
Alternatief met een type inference trick:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Program
{
    static Func<A, R> Lambda<A, R>(Func<A, R> f)
    {
        return f;
    }
    static Func<A, B, R> Lambda<A, B, R>(Func<A, B, R> f)
    {
        return f;
    }

    static void Main(string[] args)
    {
        var pair = Lambda((dynamic x, dynamic y) => Lambda((dynamic f) => f(x, y)));
        var fst = Lambda((dynamic p) => p(Lambda((dynamic x, dynamic y) => x)));
        var snd = Lambda((dynamic p) => p(Lambda((dynamic x, dynamic y) => y)));
            
        {
            dynamic p = pair(1, 2);
            Console.WriteLine(fst(p));
            Console.WriteLine(snd(p));
            Console.ReadKey();
        }
    }
}

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • cfern
  • Registratie: Oktober 2009
  • Laatst online: 12:14
Pfft, I eat lambdas for breakfast O-)
Oef, dat was best een zwaar ontbijt. Al die type-annotaties...

Pas nadat ik het even had omgeschreven in F# had ik door wat het eigenlijk deed:
code:
1
2
3
4
let pair (x,y) f = f (x,y)

let first p = p (fun (x,y) -> x)
let second p = p (fun (x,y) -> y)


Even met de cursor boven 'pair' zweven en laat de compiler zelf maar types afleiden:
code:
1
val pair: 'a * 'b -> ('a * 'b -> 'c) -> 'c


Misschien maar eens even proberen die C# versie op het werk een projectje in te smokkelen. Eens even kijken hoe lang het duurt voordat ik door het raam naar buiten getieft word. Gelukkig hebben we gras buiten, dus misschien overleef ik het wel.

[ Voor 6% gewijzigd door cfern op 30-07-2010 10:37 ]

"I'd rather have a full bottle in front of me, than a full frontal lobotomy." (Tom Waits) | PoE


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
De codebase die ik nu ge-erfd heb is echt zooo erg. Je snapt gewoon absoluut niet wat er gebeurt en uiteindelijk herschrijf je het component en dan doe je het zelfde in een regeltje of 15 waar daar twee ontzettend lange classes voor nodig zijn geweest. Er was gewoon geen framework kennis en een heel gebrekkige programmeer kennis, nauwelijks werd er gebruik gemaakt van OO (anders dan nieuwe objecten kweken) maar inheritance e.d., pff zelden.

Een leuk voorbeeld was het volgende.

Interface C
Class A : C
Class B : C

Class B was gelijk aan class A op een paar kleine dingetjes in een van de methoden na, toch was er voor gekozen om een interface te gebruiken zodat ze gelijk aangesproken konden worden, ipv gewoon B van A te laten overerven en die methode in A wat uit elkaar te trekken zodat je met een of 2 method overrides klaar was geweest.


Het leuke is trouwens dat er tegelijkertijd voor PC als XBOX wordt ontwikkeld, maar dat de XBOX versie eigenlijk constant in een broken state is (File IO oplossingen die helemaal niet kunnen op de Xbox) en dat beide projecten vol staan met #IF XBOX :).

Refactoring was bijna niet te doen om dat de architectuur gewoon slecht in elkaar zit. Daarom maar van scratch begonnen en nu probeer ik telkens een component in het nieuwe project te transplanteren zodat ik niet alles opnieuw moet schrijven. Achja ik wist het voordat ik begon :).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Ik kom nu een functie tegen die ik hier niet mag plaatsen, maar wel beschrijven.
Zoek in een xml naar een bepaalde node, als de gevonden is return je de node.InnerText en als je niets vind return je "-1"
En ik maar zoeken waar die -1 vandaan getovert wordt terwijl ik niets voor die waarde in de xml gestopt had 8)7

/edit
Is het al weekend? :'(
string Locked = "false";
Hij kan ergens op "true" gezet worden en er staat ergens een if (Locked == "true")
Gelijk maar eens vervangen voor een boolean.

[ Voor 23% gewijzigd door PiepPiep op 30-07-2010 12:33 ]

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


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

PiepPiep schreef op vrijdag 30 juli 2010 @ 11:26:
Ik kom nu een functie tegen die ik hier niet mag plaatsen, maar wel beschrijven.
Zoek in een xml naar een bepaalde node, als de gevonden is return je de node.InnerText en als je niets vind return je "-1"
En ik maar zoeken waar die -1 vandaan getovert wordt terwijl ik niets voor die waarde in de xml gestopt had 8)7
Zolang het gedocumenteerd is, is het niet zo erg. Neemt niet wel dat String.Empty of (beter) null beter was geweest.
Het leuke is trouwens dat er tegelijkertijd voor PC als XBOX wordt ontwikkeld, maar dat de XBOX versie eigenlijk constant in een broken state is (File IO oplossingen die helemaal niet kunnen op de Xbox) en dat beide projecten vol staan met #IF XBOX :).
Als dat C# en XNA is, dan is het vreemd dat er van File gebruik gemaakt wordt omdat XNA zelf een content provider voor dat soort dingen heeft.

[ Voor 27% gewijzigd door Sebazzz op 30-07-2010 12:55 ]

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


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
PiepPiep schreef op vrijdag 30 juli 2010 @ 11:26:
Ik kom nu een functie tegen die ik hier niet mag plaatsen, maar wel beschrijven.
Zoek in een xml naar een bepaalde node, als de gevonden is return je de node.InnerText en als je niets vind return je "-1"
En ik maar zoeken waar die -1 vandaan getovert wordt terwijl ik niets voor die waarde in de xml gestopt had 8)7

/edit
Is het al weekend? :'(
string Locked = "false";
Hij kan ergens op "true" gezet worden en er staat ergens een if (Locked == "true")
Gelijk maar eens vervangen voor een boolean.
Waarom maak je er geen tryparse-achtige functie van met een out dan?

Je returnt gewoon een boolean of de node bestaat en zo ja, prop je de innerText in de out string.

==> private boolean findNode(string name, out string value)

Acties:
  • 0 Henk 'm!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Ik vind beide oplossingen mooi, maar durf het nu nog niet aan om aan te passen.
Iemand anders heeft dit gemaakt en de functie wordt uit veel plaatsen aangeroepen zonder dat er iets gedocumenteerd is. Als er maar 1 keer vanuit gegaan wordt dat "-1" betekend dat iets er niet is gaat het al mis.

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


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
PiepPiep schreef op vrijdag 30 juli 2010 @ 13:35:
Ik vind beide oplossingen mooi, maar durf het nu nog niet aan om aan te passen.
Iemand anders heeft dit gemaakt en de functie wordt uit veel plaatsen aangeroepen zonder dat er iets gedocumenteerd is. Als er maar 1 keer vanuit gegaan wordt dat "-1" betekend dat iets er niet is gaat het al mis.
Ja, maar nu kunnen elementen geen echte waarde van -1 hebben.

Ik snap het wel, omdat standaardfuncties die een int returnen van een index ook altijd -1 geven als het item niet wordt gevonden, maar het is wel gevaarlijk zo.

Acties:
  • 0 Henk 'm!

  • qrazi
  • Registratie: Oktober 2000
  • Laatst online: 30-09 10:14
Weet niet zeker of het zo is, maar volgende leek mij nogal inefficient om de bestandsnaam van een plaatje uit een url te filteren

ASP:
1
2
3
Do While instr(prod_img, "/") > 0 
    prod_img = right( prod_img,  Len(prod_img) - InStr(prod_img,"/") )              
Loop


Heb het zelf maar vervangen door

ASP:
1
prod_img = Right(prod_img, Len(prod_img) - InStrRev(prod_img, "/"))

AMD Phenom II X2 555@ X4 B55, 4GB DDR3-1333 OCZ Gold, MSI 870A-G54, Radeon HD 7770 512 MB


Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 09:39
Hou toch eens op met dat ASP :)

C#:
1
prod_img.Substring(prod_img.LastIndexOf('/'))


Of nog mooier:

C#:
1
new Uri(prod_img).Segments.Last()

[ Voor 27% gewijzigd door creator1988 op 30-07-2010 15:52 ]


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
C#:
1
CurIPAddressBin.Add(Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[0]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[1]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[2]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[3]), 2).PadLeft(8, '0'));


Dat moet volgens mij wel makkelijker kunnen. B) :$

Maar hey het werkt O-)

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Jemig :') Wat probeer je te bereiken dan? Een IP-adres omzetten in decimalen ofzo?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Sebazzz schreef op vrijdag 30 juli 2010 @ 12:53:

Als dat C# en XNA is, dan is het vreemd dat er van File gebruik gemaakt wordt omdat XNA zelf een content provider voor dat soort dingen heeft.
We have a winner! Helaas ier ook Texture2D.FromFile(..) (Windows only).

Dus dan krijg je in je loadcontent metoden iets als:

C#:
1
2
3
4
5
6
Texture2D tex;
#if XBOX360
tex = Content.Load<Texture2D>(@"MyTexture");
#elseif
tex = Texture2D.FromFile(MyRootPath + "\MyTexture.jpg");
#endif

Terwijl de eerste code op beide platformen werkt (en een stuk beter is!)

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • qrazi
  • Registratie: Oktober 2000
  • Laatst online: 30-09 10:14
creator1988 schreef op vrijdag 30 juli 2010 @ 15:49:
Hou toch eens op met dat ASP :)

C#:
1
prod_img.Substring(prod_img.LastIndexOf('/'))


Of nog mooier:

C#:
1
new Uri(prod_img).Segments.Last()
Helaas, niet mogelijk.... Is een nogal grote (qua lijnen code) website, waar geen tijd en geld meer aan besteed mag worden dan nodig, i.v.m. overstap op "korte termijn" naar nieuwe applicatie (ook weer third-party)..... :|

AMD Phenom II X2 555@ X4 B55, 4GB DDR3-1333 OCZ Gold, MSI 870A-G54, Radeon HD 7770 512 MB


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Alex) schreef op vrijdag 30 juli 2010 @ 16:25:
Jemig :') Wat probeer je te bereiken dan? Een IP-adres omzetten in decimalen ofzo?
Euh nee een IPv4 adres bestaat al uit decimalen :+ ik zet 'm om naar binair en plaats de nodige voorloopnullen.

Verderop in het programma wordt hetzelfde gedaan met een netwerkadres + beide afgekapt op de lengte van de subnetmask om ze vervolgens te vergelijken en er zo achter te komen in welk netwerk een client zit :+

Het programmatje had een update nodig omdat het niet meer samenwerkt met Windows 7 / 2008 aangezien 'ie daar een IPv6 adres teruggeeft :P dus dan kom je wel eens wat oude code tegen :D

[ Voor 15% gewijzigd door Noxious op 30-07-2010 16:45 ]


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Noxious schreef op vrijdag 30 juli 2010 @ 16:44:
[...]

Euh nee een IPv4 adres bestaat al uit decimalen :+ ik zet 'm om naar binair en plaats de nodige voorloopnullen.

Verderop in het programma wordt hetzelfde gedaan met een netwerkadres + beide afgekapt op de lengte van de subnetmask om ze vervolgens te vergelijken en er zo achter te komen in welk netwerk een client zit :+

Het programmatje had een update nodig omdat het niet meer samenwerkt met Windows 7 / 2008 aangezien 'ie daar een IPv6 adres teruggeeft :P dus dan kom je wel eens wat oude code tegen :D
Gebruik de methode GetAddressBytes() op een IPAddress object en je krijgt een byte array.
Daar kan je dan makkelijk een binaire string van maken met String.Join.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 28-09 19:33

Sebazzz

3dp

Eigenlijk dubbel fail omdat er niet van Path.Combine gebruik gemaakt wordt ;)

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


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Davio schreef op vrijdag 30 juli 2010 @ 18:50:
[...]

Gebruik de methode GetAddressBytes() op een IPAddress object en je krijgt een byte array.
Daar kan je dan makkelijk een binaire string van maken met String.Join.
Hmm ik wil dus van de string '192.168.178.44' naar de string '11000000101010001011001000101100' toe.
Ik heb wat gegoogled en gelezen, maar hoe zet ik nu die byte array om naar een string met 0'en en 1'tjes (behalve met een lelijk for loopje)? De meeste voorbeelden die ik tegenkom vertalen het weer terug naar decimale tekens. :P

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Waarom doe je dat uberhaupt met strings? Het vergelijken en afkappen kun je veel efficienter en beter doen door het gewoon in die bytearray te houden.

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Janoz schreef op maandag 02 augustus 2010 @ 16:12:
Waarom doe je dat uberhaupt met strings? Het vergelijken en afkappen kun je veel efficienter en beter doen door het gewoon in die bytearray te houden.
Mja ik vergelijk een IP met een netwerkadres (bijv. 192.168.0.0). Deze komt als string uit een XML file, ik kan die natuurlijk inlezen als IP (met IPAddress.TryParse), moet ik alleen testen of 'ie die wel valid vind gezien het natuurlijk geen geldig IP adres is...

Overigens moet ik ook aangeven dat ik behoorlijk nieuw ben met C# :+ da's geen excuus, maar misschien een verklaring.

[ Voor 12% gewijzigd door Noxious op 02-08-2010 16:20 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Euhm, zou je die laatste op 1 na laatste zin iets kunnen verduidelijken?

[na edit]
Maar dat heb je toch sowieso nodig? Anders valt het überhaupt niet om te zetten naar 4 bytes (of 16 in het geval van ipv6)
[/na edit]

Daarnaast, mijn opmerking ging vooral over het omzetten naar een binaire representatie in een string.

[ Voor 35% gewijzigd door Janoz op 02-08-2010 16:26 . Reden: nav edit hierboven ]

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Janoz schreef op maandag 02 augustus 2010 @ 16:22:
Euhm, zou je die laatste op 1 na laatste zin iets kunnen verduidelijken?

Daarnaast, mijn opmerking ging vooral over het omzetten naar een binaire representatie in een string.
Ik zal even uitleggen wat het programmatje doet:

Leest een XML file in met daarin namen van locaties en hun iprange, bijv:
XML:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <site>
        <description>NLVUN</description>
        <range>10.166.64.0/22</range>
    </site>
    <site>
        <description>NLKOS</description>
        <range>10.166.124.0/22</range>
    </site>
</root>

En dan dus een stuk of 100 onder elkaar zo. Deze gooit ie in een array (System.Collections.ArrayList).
Daarnaast vraagt 'ie de huidige IPadressen van de machine op en gooit deze ook in een ArrayList.

Voordat 'ie ze in die array gooit zet ik ze om naar een string met 0'en en 1'en als platte text. Bij het vergelijken daarna (ik loop door array x heen en daarin loop ik door array y heen) kap ik deze strings af op de lengte van de subnet (bijv. dus de /22 (255.255.252.0) /24 (255.255.255.0) /16 (255.255.0.0) enz) en vergelijk ik de twee. Bij een match return ik de naam van de locatie.

Dit tooltje wordt vooral gebruikt in batchfiles, logonscripts, enz hier en daar in het netwerk en doet het al wat jaren prima, totdat Windows 7 dus het IPv6 adres returnde ipv het IPv4 adres als default ;)

Edit-na-jou-edit:
Noxious schreef op vrijdag 30 juli 2010 @ 16:23:
C#:
1
CurIPAddressBin.Add(Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[0]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[1]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[2]), 2).PadLeft(8, '0') + Convert.ToString(Convert.ToInt32(IP.ToString().Split('.')[3]), 2).PadLeft(8, '0'));


Dat moet volgens mij wel makkelijker kunnen. B) :$

Maar hey het werkt O-)
;) de ranzige methode :D

[ Voor 17% gewijzigd door Noxious op 02-08-2010 16:33 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Ik begrijp wel wat je aan het doen bent. Waar ik meer op doel is dat het eigenlijk een WTF op zich is dat je die vergelijkingen überhaupt in string vorm doet. Ik kan je aanraden eens te gaan kijken naar bitwise operatoren en wat je daar allemaal mee kunt doen.

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Ah zo, mja ik moet eerlijk zeggen dat ik daar nog niet heel hard naar gekeken heb. Echter als ik 192.168.0.0 wil omzetten naar binair formaat, moet ik hetzelfde trucje doen (splitsen op de punten en afhankelijk van mijn vergelijkingsmethode ook nog voorloopnullen toevoegen) en schiet ik er niet veel mee op.

Een andere mogelijkheid is om het in te lezen als IPadres met IPAddress.TryParse en die weer uit te lezen met .GetAddressBytes() en daarop vergelijken. Echter weet ik (nog) niet (nog niet getest) of 'ie 192.168.0.0 bijv als een geldig IPadres ziet (volgens de RFC's zou ie dat namelijk niet valid moeten vinden daar het een netwerkadres is ipv een IPadres).

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Wanneer je elk deel omzet naar een byte dan heb je niks met voorloopnullen te maken. Gewoon elk deel omzetten in een byte. Daarnaast lijkt het me niet dat in de context van het parsen van een ipadres bepaald kan worden of een ip adres in die mate valid is. Dergelijke validiteit is pas van toepassing wanneer je het ipadres in een bepaalde context gebruikt. Het lijkt mij dat tijdens het parsen alleen gekeken wordt of er vier delen zijn en dat ze elk een byte representeren (dus 0<=x<256)

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
TryParse werkt iig met netwerkadressen dus dit moet ook gaan werken :) tnx sofar!

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Janoz schreef op maandag 02 augustus 2010 @ 16:52:
Wanneer je elk deel omzet naar een byte dan heb je niks met voorloopnullen te maken. Gewoon elk deel omzetten in een byte. Daarnaast lijkt het me niet dat in de context van het parsen van een ipadres bepaald kan worden of een ip adres in die mate valid is. Dergelijke validiteit is pas van toepassing wanneer je het ipadres in een bepaalde context gebruikt. Het lijkt mij dat tijdens het parsen alleen gekeken wordt of er vier delen zijn en dat ze elk een byte representeren (dus 0<=x<256)
Ja, al werkt TryParse ongetwijfeld ook voor IPv6-adressen die doorgaans getoond worden in de vorm van 00-ff en gescheiden door dubbele punten in plaats van punten.

Je maakt echter een kapitale fout in denkwijze als je met strings gaat werken; je neemt namelijk aan dat een object als een IP-adres altijd inherent hetzelfde blijft en dat je er daarom gewoonweg strings van kunt maken en die kunt vergelijken.

Een IP-adres is geen primair datatype als een integer. Als je van het getal 3 een string maakt, is het altijd "3" (of 3,000 of 3.000, jullie snappen de bedoeling), maar nooit "4". Voor klassen en objecten geldt dat niet.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

@Davio: Ik neem aan dat je met de 'je' in je tweede alinea JapyDooge bedoeld, aangezien ik hem juist stapje voor stapje probeert te laten inzien dat het nogal onlogisch is om zijn datatype om te batterijen naar een string representatie aangezien de bitwise bewerking veel makkelijker en sneller op de bits zelf toe te passen is.

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Davio schreef op maandag 02 augustus 2010 @ 20:26:
[...]

Ja, al werkt TryParse ongetwijfeld ook voor IPv6-adressen die doorgaans getoond worden in de vorm van 00-ff en gescheiden door dubbele punten in plaats van punten.
Oh uiteraard, maar die filter ik er al uit, aan IPv6 heb ik geen boodschap.
Je maakt echter een kapitale fout in denkwijze als je met strings gaat werken; je neemt namelijk aan dat een object als een IP-adres altijd inherent hetzelfde blijft en dat je er daarom gewoonweg strings van kunt maken en die kunt vergelijken.

Een IP-adres is geen primair datatype als een integer. Als je van het getal 3 een string maakt, is het altijd "3" (of 3,000 of 3.000, jullie snappen de bedoeling), maar nooit "4". Voor klassen en objecten geldt dat niet.
Euh? Die snap ik niet of het kwartje valt niet, natuurlijk ga ik er niet vanuit dat het IP van client/netwerk/whatever altijd hetzelfde is. Ook al is mijn string-methode sofar niet de beste oplossing (en heb ik dat dus ook aangepast), het werkte wel perfect. Ik zie niet in waarom het niet zou werken.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Het cruciale punt is voornamelijk het datatype. Als jij bewerkingen op aantallen uit gaat voeren, dan ga je die hoeveelheden toch ook niet in een string zetten en daar vervolgens allemaal character based operaties op uitvoeren? Om met een bitmask te werken moet je gewoon de bytes gebruiken. Daarvoor hoef je er niet eerst een string van te maken.

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!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Jawel, dat snap ik helemaal. Maar ik zie niet in hoe het mis zou kunnen gaan. Het werkte namelijk prima :+

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Ah, een 'ja het is een hack, maar het werkt toch' argument ;). Daar is inderdaad weinig tegen in te brengen. Het enige wat ik er dan nog van kan zeggen is dat je originele regel code nogal onleesbaar is (je hebt wel even nodig voordat je doorhebt wat er eigenlijk gebeurt, zeker ook omdat het gebruikelijker is om dit op een andere manier te doen) en een stuk inefficiënter.

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!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:47

Haan

dotnetter

Noxious schreef op dinsdag 03 augustus 2010 @ 10:03:
Jawel, dat snap ik helemaal. Maar ik zie niet in hoe het mis zou kunnen gaan. Het werkte namelijk prima :+
Dat geldt voor veel van de stukken code die hier gepost worden hè ;) Dat je code uiteindelijk wel werkt, maakt het niet meteen goede code :)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Dat snap ik ;) ik begrijp helemaal dat het niet netjes is. Maar de reactie van Davio kwam op mij over dat hij bedoelde dat er iets fout kon gaan. :P

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Davio schreef op maandag 02 augustus 2010 @ 20:26:
[...]
Je maakt echter een kapitale fout in denkwijze als je met strings gaat werken; je neemt namelijk aan dat een object als een IP-adres altijd inherent hetzelfde blijft en dat je er daarom gewoonweg strings van kunt maken en die kunt vergelijken.

Een IP-adres is geen primair datatype als een integer. Als je van het getal 3 een string maakt, is het altijd "3" (of 3,000 of 3.000, jullie snappen de bedoeling), maar nooit "4". Voor klassen en objecten geldt dat niet.
Volgens mij is er eigenlijk maar 1 datatype wat niet uit te drukken is als een string: een afbeelding (discutabel trouwens).

Natuurlijk kun jij een ip adres op meerdere manieren afbeelden (vriendelijke punt notatie, of als byte[] of...). Maar als je eenmaal één formaat hebt afgesproken en dit consistent doet zal het ip adres "192.168.0.1" toch prima op die manier voor te stellen zijn als een string?

Gaan we noch een stapje verder: alle primaire datatypes zijn af te beelden als een string: Objecten (classen) zijn gemaakt van een set primaire datatypen -> alle objecten zijn af te beelden als een string.

Daar gaat bijvoorbeeld XMLSerialization wel van uit.

Ik snap je voorbeeld dan ook niet. Een class die mij als persoon voorstelt (naam en geboortedatum) zal altijd voor te stellen zijn als "Roy, 1988" of "1988, Roy" of "1988Nchr: Roy" (je snapt het idee) net zoals je een getal ook kan voorstellen als "4", "4.000" "4,00" "4*10^0". Etc... Jouw voorbeeld geld in beide getallen. Je moet altijd afspreken hoe je string representatie er uit ziet.

Dus mis ik nu compleet je punt, of?

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Mijn punt is dat je jou inderdaad als "Roy, 1988" voor kunt stellen. Als je dat dan gaat parsen als "Naam, Geboortejaar" komt er uit wat je verwacht. Maar als je je klasse verandert zodat er "1988, Roy" uitkomt, dan klopt het niet meer. Dan heet je 1988 en ben je geboren in het jaar 0, net als Jezus.

Mijn punt is dus dat je moet oppassen met het vergelijken van strings die een bepaald object voor moeten stellen en het is natuurlijk altijd beter om objecten direct te vergelijken (bijvoorbeeld door de interface iEquatable te implementeren en een eigen Equals methode te schrijven.

In jouw geval zou het dan zijn:
C#:
1
2
3
4
public boolean Equals(Person other)
{
    return (this.Naam == other.Naam && this.Geboortedatum.Equals(other.Geboortedatum)); // Weet even niet zeker of datum compare ook met == mag
}


Het komt er dus op neer dat je er niet zomaar van uit mag gaan dat een willekeurige string-representatie van een object hetzelfde voorstelt als het hele object.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:49

Janoz

Moderator Devschuur®

!litemod

Trouwens. Geboortedatum en naam is absoluut geen unieke key voor een persoon. Ikzelf ken iemand met dezelfde naam die op exact dezelfde dag geboren is als ik. Kwamen we in het ziekenhuis gelukkig op tijd achter. Ik heb alleen wel maanden geen studiefinanciering gehad omdat de andere 'janoz' bij een garage aan het werk was en (waarschijnlijk) mijn sofinummer gebruikte.

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

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