[.NET] Waarde in een array wijzigen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Eigenlijk is dit zo'n kleine vraag uit interesse dat ik er geen topic voor wou aanmaken, maar De Devschuur Coffee Corner - Iteratie ➓ leek mij niet de juiste plek.

Een string bevat een IP adres en we willen een adresje lager.
PowerShell:
1
2
3
4
5
6
7
# De variabele wordt geladen met het IP adres van server $x en gesplit op een punt.
# Het bevat laat ons zeggen 10.0.0.100
$y = ((Test-NetConnection $x).RemoteAddress.IPAddressToString).Split('.')
# Van de vierde byte trekken we ééntje af, want we willen 10.0.0.99
$y[3] = $y[3] - 1
# En dan maken we er weer een string van.
$y -join '.'


Werkt perfect hoor, maar ik ben zeker dat het eleganter of toch korter kan. Hoe zouden jullie programmeurs (i.t.t scripters zoals ik) dat doen?

Edit

Alternatieve weergave met de echte namen:

PowerShell:
1
2
3
4
5
6
7
Function Get-ClusterNodeIP ($HostName)
    {
    $IPAddress = ((Test-NetConnection $HostName).RemoteAddress.IPAddressToString).Split('.')
    $IPAddress[3] = $IPAddress[3] - 1
    $IPAddress = $IPAddress -join '.'
    Return $IPAddress
    }

[ Voor 19% gewijzigd door YellowOnline op 30-03-2016 13:05 ]


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 13:44

Dido

heforshe

Je kunt het in 1 regel zetten, maar of dat de leesbaarheid bevordert is de vraag.

Is Powershell ook al .Net tegenwoordig?

En wat doe je als de laatste byte 0 bevat?

Voor een hint wat betreft C# (.NET) zie bijvoorbeeld stack overflow.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Maak er een ulong van en trek er daar 1 van af. Dan gaat het iig altijd goed (als in: dan hou je iig een "valid" ip over)

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!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Dido schreef op woensdag 30 maart 2016 @ 13:05:
Je kunt het in 1 regel zetten, maar of dat de leesbaarheid bevordert is de vraag.

Is Powershell ook al .Net tegenwoordig?

En wat doe je als de laatste byte 0 bevat?

Voor een hint wat betreft C# (.NET) zie bijvoorbeeld stack overflow.
Powershell is van de .NET familie en zodoende zijn .NET oplossingen vrijwel altijd voor PoSh geldig.

Wat ik uit die link haal dat echt interessant is, is dat ik de ipv4 eigenlijk naar een hele int kan omzetten, de bewerking doen, en terug. Leesbaarder zal het wel niet worden :+

Het geval 0 is inderdaad iets dat ik niet overwogen heb. Kan theoretisch ook niet voorkomen, maar mijn script heeft error catching voor onbestaande adressen.
RobIII schreef op woensdag 30 maart 2016 @ 13:14:
Maak er een ulong van en trek er daar 1 van af. Dan gaat het iig altijd goed (als in: dan hou je iig een "valid" ip over)
Ja, inderdaad.

[ Voor 21% gewijzigd door YellowOnline op 30-03-2016 13:17 ]


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 13:44

Dido

heforshe

YellowOnline schreef op woensdag 30 maart 2016 @ 13:15:
Wat ik uit die link haal dat echt interessant is, is dat ik de ipv4 eigenlijk naar een hele int kan omzetten, de bewerking doen, en terug. Leesbaarder zal het wel niet worden :+
Soms is het beter om iets in drie leesbare stappen te doen dan 1 regel onleesbare "magie" :)
Het geval 0 is inderdaad iets dat ik niet overwogen heb. Kan theoretisch ook niet voorkomen, maar mijn script heeft error catching voor onbestaande adressen.
Omzetten naar int / ulong levert een andere oplossing voor het geval 0, maar de keus is natuurlijk functioneel.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dido schreef op woensdag 30 maart 2016 @ 13:26:
maar de keus is natuurlijk functioneel.
Psies. Sowieso vind ik de requirement "ip X maar dan eentje lager" maar raar... Ik zeg niet dat 't nooit voorkomt, maar toch een beetje een vage eis.

[ Voor 13% gewijzigd door RobIII op 30-03-2016 14:04 ]

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!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
RobIII schreef op woensdag 30 maart 2016 @ 14:03:
[...]

Psies. Sowieso vind ik de requirement "ip X maar dan eentje lager" maar raar... Ik zeg niet dat 't nooit voorkomt, maar toch een beetje een vage eis.
Gegeven de hostname ROBIIICLUSTER als input. Dat ding resolved naar 172.10.0.200. Dan weet ik dat de node die ik aanspreken moet zich op 172.10.0.199 bevindt (200 -1, omdat dat intern zo geregeld is in die firma). Dat is nu eenmaal de input die ik krijg. Roeien, riemen, etc :)

[ Voor 6% gewijzigd door YellowOnline op 30-03-2016 14:19 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
YellowOnline schreef op woensdag 30 maart 2016 @ 14:17:
[...]


Gegeven de hostname ROBIIICLUSTER als input. Dat ding resolved naar 172.10.0.200. Dan weet ik dat de node die ik aanspreken moet zich op 172.10.0.199 bevindt (200 -1, omdat dat intern zo geregeld is in die firma). Dat is nu eenmaal de input die ik krijg. Roeien, riemen, etc :)
Best hoor ;) Maar ik zou toch eens kijken naar, bijvoorbeeld, SRV records o.i.d. Als systeembeheer vandaag-of-morgen besluit dat dat eigenlijk helemaal niet handig is om die nodes altijd zo te moeten opzetten kun jij je code gaan aanpassen ;) Zonder verder te weten om welke "cluster" het hier gaat; je zou verwachten dat je aan de 'cluster manager' (.200 in jouw geval) zou moeten (kunnen) vragen waar (als in: welk IP) de gewenste node zich bevindt (of nodes?).

[ Voor 13% gewijzigd door RobIII op 30-03-2016 14:43 ]

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

Pagina: 1