De Devschuur Coffee Corner - Iteratie ⓫ Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 83 ... 100 Laatste
Acties:
  • 555.185 views

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 23:15
Wat me opvalt in alle bovenstaande voorbeelden is dat iedereen met een controle werkt of het de eerste iteratie is (incl. "nullable int" in de C# variant). Waarom niet het eerste item meteen verwerken en dan vanaf 2 itereren?

https://3v4l.org/mMmZa

  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
Afgekeurd op 't mixen van Nederlands en Engels.

https://niels.nu


  • Lethalis
  • Registratie: April 2002
  • Niet online
Hydra schreef op dinsdag 1 mei 2018 @ 15:19:
[...]
Afgekeurd op 't mixen van Nederlands en Engels.
Tsja, dat is 1 keer zeggen dat je alles in het Engels of Nederlands wil en dan zijn we ook klaar toch?

Ik heb zelf nog even input validatie toegevoegd.

Ask yourself if you are happy and then you cease to be.


  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
Lethalis schreef op dinsdag 1 mei 2018 @ 15:23:
Tsja, dat is 1 keer zeggen dat je alles in het Engels of Nederlands wil en dan zijn we ook klaar toch?
It's a joke ;)

https://niels.nu


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:18

orf

Hydra schreef op dinsdag 1 mei 2018 @ 15:11:
[...]


Dat dacht men hier ook. Totdat je doorkrijgt hoeveel tijd en energie een bad hire vraagt. Dit was nota bene een externe en het heeft heel veel tijd gekost om 'em er weer uit te krijgen. Komt nog eens bij dat het op een gegeven moment voor mij efficienter was om dingen zelf te doen dan iedere keer in ellenlange discussies (over simpele zaken zoals dat 't nogal onnodig was 2 keer achter elkaar exact dezelfde query op de DB te doen) over merge requests te voeren.

Een coding test van 1-2 uur is een prima tijdsinvestering om een goed beeld te krijgen van hoe iemand werkt. Als we dat bij bovenstaande knakker gedaan hadden, was 'ie nooit aangenomen en hadden we geen man-dagen in discussies, dingen leren en dingen ongedaan maken hoeven steken.

Daarnaast vind ik het ook een verplichting naar mensen toe. Je vraag mensen hun baan op te zeggen en dan gooi je ze er na een paar dagen weer uit. Niet zo netjes.
Met een inwerkproject kan een nieuwe medewerker niets verkeerd doen. We hebben een standaard project, opgedeeld in 4 sprintjes van een week. Dan zie je hoe iemand aan de lunchtafel is, of hij of zij een beetje kan communiceren en wat de kwaliteit van het werkt is. Een senior uit het team begeleidt 'm en doet wekelijks verslag. Pas na die maand gaat iemand echt meedraaien in het team.

  • Lethalis
  • Registratie: April 2002
  • Niet online
Okee :)

Ik ken een paar mensen die van zoiets best een punt kunnen maken. Dat zijn overigens wel dezelfde mensen die hele discussies voeren over het feit of een accolade op een nieuwe regel moet beginnen of niet.

Ask yourself if you are happy and then you cease to be.


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Lethalis schreef op dinsdag 1 mei 2018 @ 15:33:
[...]

Okee :)

Ik ken een paar mensen die van zoiets best een punt kunnen maken. Dat zijn overigens wel dezelfde mensen die hele discussies voeren over het feit of een accolade op een nieuwe regel moet beginnen of niet.
Oh ik zou er bij echte code voor productie (niet een entry test) wel degelijk een probleem van maken hoor :) En die accolades; welke optie maakt me niet uit maar consistentie is wel belangrijk.

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:18

orf

Cloud schreef op dinsdag 1 mei 2018 @ 15:36:
[...]

Oh ik zou er bij echte code voor productie (niet een entry test) wel degelijk een probleem van maken hoor :) En die accolades; welke optie maakt me niet uit maar consistentie is wel belangrijk.
Daar niet gewoon linters voor gebruiken?

  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
orf schreef op dinsdag 1 mei 2018 @ 15:32:
Met een inwerkproject kan een nieuwe medewerker niets verkeerd doen. We hebben een standaard project, opgedeeld in 4 sprintjes van een week. Dan zie je hoe iemand aan de lunchtafel is, of hij of zij een beetje kan communiceren en wat de kwaliteit van het werkt is. Een senior uit het team begeleidt 'm en doet wekelijks verslag. Pas na die maand gaat iemand echt meedraaien in het team.
Die luxe hebben we in m'n huidige project (ben extern) niet echt. Daarbij vind ik het nog steeds ook niet netjes naar die persoon toe als je niet een beetje je best doet om te kijken of het een goeie fit is. Die persoon heeft wel z'n baan / project opgezegd.
Cloud schreef op dinsdag 1 mei 2018 @ 15:36:
Oh ik zou er bij echte code voor productie (niet een entry test) wel degelijk een probleem van maken hoor :) En die accolades; welke optie maakt me niet uit maar consistentie is wel belangrijk.
Oh mee eens hoor. Ik heb er een hekel aan. Maar zou er in een test geen issue van maken (hoewel ik wel m'n voorkeur merkbaar zou maken denk ik).

https://niels.nu


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:18

orf

Hydra schreef op dinsdag 1 mei 2018 @ 15:41:
[...]
Daarbij vind ik het nog steeds ook niet netjes naar die persoon toe als je niet een beetje je best doet om te kijken of het een goeie fit is. Die persoon heeft wel z'n baan / project opgezegd.
[...]
Mee eens :) Het gaat hier echt om wat je van te voren gemist hebt en een (pair programming) test kan heel goed helpen om nog minder te missen.

  • Ryada
  • Registratie: Oktober 2012
  • Laatst online: 05-12 15:14

Ryada

She/Her

DevWouter schreef op dinsdag 1 mei 2018 @ 12:58:

Een test die een goeie vriend van mij hanteert is een unit test die opgelost moet worden.
code:
1
2
3
4
5
6
7
8
9
10
var input = [1, 2, 3, 5, 4,7,6,8, 9];
var expect = [
  [1, 2, 3, 5],
  [4, 7],
  [6, 8, 9]
];

// Implementeer de functie, geef een lijst van reeksen terug op basis van de input. 
// Elke keer als het volgende getal niet oplopend is begin je een nieuwe reeks.
var actual = func(input);
Denk ik probeer het ook eens, maar heb het vermoeden dat ik er veel te moeilijk over nadenk :(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Program
    {
        static void Main(string[] args)
        {
            var input = new[] { 1, 2, 3, 5, 4, 7, 6, 8, 9 };

            var result = SplitSequences(input);
        }

        private static IEnumerable<int[]> SplitSequences(int[] input)
        {
            var result = new List<int[]>();
            var previous = input[0];
            var startIndex = 0;

            for (var i = 1; i < input.Length; i++)
            {
                if (input[i] - 1 == previous && i != input.Length - 1)
                {
                    previous = input[i];
                    continue;
                }

                previous = input[i];
                i++;

                var currentCount = i - startIndex;

                var slice = new int[currentCount];
                Array.Copy(input, startIndex, slice, 0, currentCount);
                startIndex = i;

                result.Add(slice);
            }

            return result;
        }
    }


Reden dat ik zo lang erover deed, was omdat ik eerst aan het kijken was of ik leuk Span<T> en Yield Return kon gebruiken voor de leuk :9

[ Voor 4% gewijzigd door Ryada op 01-05-2018 15:47 ]

Steam: Ryada.


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

orf schreef op dinsdag 1 mei 2018 @ 15:40:
[...]
Daar niet gewoon linters voor gebruiken?
Bij .NET noemen we dat volgens mij niet linters (ik ken die term alleen van python) maar inderdaad; dat wordt bij ons afgedwongen door code analysis. Je hebt weinig keuze als developer als je de build niet wilt slopen :)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Sv3n
  • Registratie: Mei 2002
  • Laatst online: 21:21
Ryada schreef op dinsdag 1 mei 2018 @ 15:46:
[...]


Denk ik probeer het ook eens, maar heb het vermoeden dat ik er veel te moeilijk over nadenk :(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Program
    {
        static void Main(string[] args)
        {
            var input = new[] { 1, 2, 3, 5, 4, 7, 6, 8, 9 };

            var result = SplitSequences(input);
        }

        private static IEnumerable<int[]> SplitSequences(int[] input)
        {
            var result = new List<int[]>();
            var previous = input[0];
            var startIndex = 0;

            for (var i = 1; i < input.Length; i++)
            {
                if (input[i] - 1 == previous && i != input.Length - 1)
                {
                    previous = input[i];
                    continue;
                }

                previous = input[i];
                i++;

                var currentCount = i - startIndex;

                var slice = new int[currentCount];
                Array.Copy(input, startIndex, slice, 0, currentCount);
                startIndex = i;

                result.Add(slice);
            }

            return result;
        }
    }


Reden dat ik zo lang erover deed, was omdat ik eerst aan het kijken was of ik leuk Span<T> en Yield Return kon gebruiken voor de leuk :9
Stukje korter:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

public class SplitTest {

    @Test
    public void testSplitList() {
        List<List<Integer>> expected = Arrays.asList(
                Arrays.asList(1, 2, 3, 5),
                Arrays.asList(4, 7),
                Arrays.asList(6, 8, 9));
        
        assertEquals(expected, split(Arrays.asList(1, 2, 3, 5, 4, 7, 6, 8, 9)));
    }
    
    
    public List<List<Integer>> split(List<Integer> input) {
        List<List<Integer>> result = new ArrayList<>();
        List<Integer> current = new ArrayList<>();
        result.add(current);
        
        for (int index = 0; index < input.size(); index++) {
            if (index > 0 && input.get(index) < input.get(index - 1)) {
                current = new ArrayList<>();
                result.add(current);
            }
            
            current.add(input.get(index));
        }
        
        return result;
    }
}

Last.fm
Films!


  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 12:49

DevWouter

Creator of Todo2d.com

Hydra schreef op dinsdag 1 mei 2018 @ 14:54:
[...]


Dit is wel zo iets simpels dat ik me wel afvraag als dat al niet lukt waarom je in onze branche actief bent. Of nouja, "het geld", dus ik vraag het me niet echt af. Maar een probleem kunnen analyseren en dan tot een oplossing komen is gewoon een belangrijke (misschien wel de belangrijkste) skill.
Mee eens. Maar als je de oplossing in de verkeerde richting zoekt of je hebt een blackout (vanwege interview stress) dan kan zelfs de beste van ons een fout maken. Daarom was ik ook benieuwd naar jouw ervaring met pair programming tijdens een interview.


Met IEnumerable bedoelde ik eerder zoiets als dit.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IEnumerable<IEnumerable<int>> consume(int[] numbers)
{
    var inputWithOffset = numbers.Skip(0);
    while (inputWithOffset.Any())
    {
        var sequence = inputWithOffset
            .TakeWhile((n, i) =>                            // Take while number is part of sequence
                    i == 0 ||                               // First number is always part of sequence.
                    inputWithOffset.ElementAt(i - 1) < n    // Check if this value is larger then previous
            );

        yield return sequence;
        inputWithOffset = inputWithOffset.Skip(sequence.Count());
    }
}

"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 18-12 12:14

TheNephilim

Wtfuzzle

DevWouter schreef op dinsdag 1 mei 2018 @ 14:37:
[...]

@TheNephilim, doe eerst de check of je naar een nieuwe lijst moet en voeg dan het nummer toe.
Ik heb het al gefixt voor je
Ah, dat viel nog mee, ik zat er dus dichtbij :p Kon er even niet meer tijd in steken.

  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 19-12 15:28

Koetjeboe

Boe, zegt de koe

Lekker kort? https://3v4l.org/lKV2D

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:18

orf

Kort en recursief. Ik vind 'm wel wat lastig leesbaar, maar dat kan ook aan mijn capaciteiten liggen. :)

  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
DevWouter schreef op dinsdag 1 mei 2018 @ 15:58:
Mee eens. Maar als je de oplossing in de verkeerde richting zoekt of je hebt een blackout (vanwege interview stress) dan kan zelfs de beste van ons een fout maken. Daarom was ik ook benieuwd naar jouw ervaring met pair programming tijdens een interview.
Ik reken sowieso mensen niet af op een enkele fout. Interviews zijn stressvol en stress en ons werk gaan sowieso niet geweldig samen. Als ik iemand vast zie lopen geef ik ze ook gewoon hints om ze de goeie kant op te bewegen. Het is 'pair programming', ik zit er niet bij om alleen maar te beoordelen. Het gaat me er vooral om om te kijken of ik met iemand samen wil werken.

Het enige is dat ik 1 uur eigenlijk wat te kort vindt. Maar meer krijg ik hier niet los want wij externen zijn 'duur'.

https://niels.nu


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 18-12 12:14

TheNephilim

Wtfuzzle

Deze moet ik toch even delen hier! :o
Iedereen die zich aanmeldt voor Hyven: de site heeft al een dikke XSS-kwetsbaarheid waarmee je logingegevens kunnen worden gestolen. Lekker veilig daar!
https://twitter.com/danielverlaan/status/991282681324490752

[ Voor 45% gewijzigd door TheNephilim op 01-05-2018 16:44 ]


Verwijderd

Niet alleen dat, de gehele broncode is gewoon inzichtelijk. Men heeft de phps functionaliteit aanstaan.

Heb de broncode ingezien maar het stikt van de beginnersfouten en lekken. Klakkeloos scripts inladen en aftrappen op basis van $_GET parameters, db gegevens gewoon open en bloot inzichtelijk.

Het is duidelijk dat dit is opgezet door studenten die nog geen diploma hebben.

  • DaWin
  • Registratie: Juni 2012
  • Laatst online: 16:47

DaWin

beep boop

update: lol, een hacker heeft op alle profielpagina's van Hyven een redirect gezet naar de pornovideo van Rapper Sjors op Pornhub
https://twitter.com/danielverlaan/status/991324613010485248

_O-

  • jaspro
  • Registratie: December 2012
  • Laatst online: 20-12 17:36
De hele website was zo lek als een mandje, ik kwam erachter dat je gadgets kon plaatsen op iemand anders zijn profiel door simpelweg het ID te vervangen die het toevoegform mee stuurde met het ID van iemand anders. Samen met de XSS kwetsbaarheid kon je daar leuke dingen mee uithalen. PHP tags filterde ze er trouwens wel uit bij de gadgets , <?php werd vervangen met <!--?php

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

Verwijderd schreef op dinsdag 1 mei 2018 @ 16:48:
[...]


Niet alleen dat, de gehele broncode is gewoon inzichtelijk. Men heeft de phps functionaliteit aanstaan.

Heb de broncode ingezien maar het stikt van de beginnersfouten en lekken. Klakkeloos scripts inladen en aftrappen op basis van $_GET parameters, db gegevens gewoon open en bloot inzichtelijk.

Het is duidelijk dat dit is opgezet door studenten die nog geen diploma hebben.
Ik wacht altijd te lang met het online plaatsen van dingen (waardoor het vaker niet dan wel gebeurd), maar dit is weer de andere kant van het spectrum :P

Verwijderd

Gropah schreef op dinsdag 1 mei 2018 @ 18:05:
[...]


Ik wacht altijd te lang met het online plaatsen van dingen (waardoor het vaker niet dan wel gebeurd), maar dit is weer de andere kant van het spectrum :P
Tja, het zijn zon grote beginnersfouten. Als ze slim zijn dan stellen ze launch een paar maanden uit. Liever dat ze nu direct op zn bek gaan dan wanneer iedereen zn data heeft ingevoerd en de schade veel groter gaat zijn.

Overigens zitten er niet al te veel details in Mn comment, de code was op moment van plaatsen al vervangen door plain text html elementen :+

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Ze zijn nu als een gek bezig om de boel 'fatsoenlijk' draaiende te krijgen, zijn ze dadelijk zo ver ligt er een brief op de mat van TMG vanwege het gebruik van de naam + logo van Hyves :7

Hoeder van het Noord-Meierijse dialect


  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 21:59

AW_Bos

Liefhebber van nostalgie... 🕰️

Als ik zo lees is die Hyven-site totaal niet goed schaalbaar. Als je al een robuust platform / framework wilt hebben ben je al naar mijn idee al weken bezig om dat op te kunnen zetten. Je wilt immers goede abstractie lagen hebben, en je wilt natuurlijk ook shitload aan bezoekers tegelijkertijd kunnen verwerken. En als dat niet lukt dat je eventjes in de cloud een extra server bij kan schakelen in no time.

Verder moet die ook door een externe partij geaudit worden als je zekerheid wilt hebben.

Zelf heb ik het idee dat dit gewoon gebouwd is op een goedkope brak geschreven source van tientallen dollar. Phpsocial lijkt er een beetje op.

Laten we even afwachten wat het wordt, maar ik vrees toch het ergste, en dat deze net als Blytes ten ondergaat.

[ Voor 16% gewijzigd door AW_Bos op 01-05-2018 20:03 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Hyven, phpSocial. En dan ook zeggen "experts" lossen het op?

De directeur heeft wat uit te leggen :D

Maak je niet druk, dat doet de compressor maar


  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 21:59

AW_Bos

Liefhebber van nostalgie... 🕰️

DJMaze schreef op dinsdag 1 mei 2018 @ 21:47:
Hyven, phpSocial. En dan ook zeggen "experts" lossen het op?

De directeur heeft wat uit te leggen :D
Welke directeur, van welk bedrijf? :+

De boel is weer online, maar ik zie hier en daar nog steeds wat JS confirm()'jes omhoogschieten.
is PhpSocial nou zo lek, of wordt het nu door die knakker om zeep geholpen?

Oh, lol. Ben mijn wachtwoord kwijt. Even 'Account herstel doen'.
Ai, krijg ik een lege mail 8)7 .

Hoelang gaat dit nog duren voordat de site plat gaat door het succes en de aanvallen?
Kwestie van dagen, denk ik.

[ Voor 46% gewijzigd door AW_Bos op 01-05-2018 22:32 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Huuskes
  • Registratie: April 2007
  • Niet online

Huuskes

Gentoo BTW

En gaat iemand anders ook dconf volgen? *O*

[ Voor 34% gewijzigd door Huuskes op 02-05-2018 01:05 . Reden: Hyperlinkje erbij ]

Gentoo BTW


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:53

.oisyn

Moderator Devschuur®

Demotivational Speaker

EddoH schreef op dinsdag 1 mei 2018 @ 14:18:
[...]


Dan weet je dat de sollicitant een arbitraire puzzel op kan lossen?
Ik zou niet weten hoe je daarmee een goede van een slechte software engineer kan onderscheiden.
Algoritmiek is het grootste fundament van het programmeren. Als een "programmeur" bij deze puzzel niet tot een redelijk fatsoenlijke oplossing kan komen (en dan gaat het vooral om het gedachteproces, niet om of de code foutloos is) dan zal ik hem niet aannemen. En natuurlijk, het feit dat hij dat wél kan impliceert nog niet dat het dus een geschikte kandidaat is, maar een sollicitatiegesprek bestaat uit meer dan alleen het oplossen van een puzzel.

[ Voor 5% gewijzigd door .oisyn op 02-05-2018 02:52 ]

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.


  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 21-12 04:21

F.West98

Alweer 16 jaar hier

Betreft die puzzel: lekker kort en functioneel:
spoiler:
split :: [Integer] -> [[Integer]]
split = foldr decide [[]]

decide :: Integer -> [[Integer]] -> [[Integer]]
decide n [[]] = [[n]]
decide n (xs@(x:_):ys)
| x >= n = ((n:xs):ys)
| x < n = ([n]:xs:ys)


En dan uitvoeren met
split [1, 2, 3, 5, 4, 7, 6, 8, 9]


Hij kan nog iets korter (maar minder mooi imo):
spoiler:
split :: [Integer] -> [[Integer]]
split (x:xs) = foldr decide [[x]] xs

decide n (xs@(x:_):ys)
| x >= n = ((n:xs):ys)
| x < n = ([n]:xs:ys)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 20:35

RayNbow

Kirika <3

F.West98 schreef op woensdag 2 mei 2018 @ 02:58:
Hij kan nog iets korter (maar minder mooi imo):
spoiler:
split :: [Integer] -> [[Integer]]
split (x:xs) = foldr decide [[x]] xs

decide n (xs@(x:_):ys)
| x >= n = ((n:xs):ys)
| x < n = ([n]:xs:ys)
Wat gebeurt als je daar een lege lijst ingooit? :p
F.West98 schreef op woensdag 2 mei 2018 @ 02:58:
Betreft die puzzel: lekker kort en functioneel:
spoiler:
split :: [Integer] -> [[Integer]]
split = foldr decide [[]]

decide :: Integer -> [[Integer]] -> [[Integer]]
decide n [[]] = [[n]]
decide n (xs@(x:_):ys)
| x >= n = ((n:xs):ys)
| x < n = ([n]:xs:ys)


En dan uitvoeren met
split [1, 2, 3, 5, 4, 7, 6, 8, 9]
Kun je de type-annotaties generieker maken?
Kun je een versie verzinnen die werkt met oneindige lijsten?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • Lethalis
  • Registratie: April 2002
  • Niet online
DevWouter schreef op dinsdag 1 mei 2018 @ 15:58:
[...]
Met IEnumerable bedoelde ik eerder zoiets als dit.
Ik heb jouw functie even doorgenomen en getest. Begrijp hem nu ook helemaal.

Kende zelf de TakeWhile functie nog niet. Doe wel dingen met Linq, maar vaak gewoon om bepaalde elementen uit een IList<T> te selecteren en eventueel te transformeren met Select() en te sorteren met OrderBy().

Ach ja, weer iets geleerd :P

En dat zou ook voor mij dan ook 1 van de belangrijkste aspecten zijn bij het beoordelen van een sollicitant. De bereidheid om nieuwe dingen te leren en open te staan voor suggesties. Vooral ook bereid zijn om over het eigen ego heen te stappen en toe te geven dat je iets niet weet.

Het is echt verschrikkelijk als mensen zich op hun tenen getrapt voelen als je ze aanspreekt op iets dat beter kan. Nog erger is het als ze dingen gewoon niet willen veranderen ("het werkt toch", "wat zeur je nou" etc).

Ik heb ooit op mijn vorige werk een collega boos het kantoor uit zien stormen nadat ik hem heb laten zien dat ik zijn code van bijna 100 regels - met tig roundtrips naar de database (en dus slechte performance) - heb vervangen door een stored procedure van amper 10 regels.

Dat snap ik gewoon niet. We hebben zijn contract destijds ook niet verlengd... :w

Ask yourself if you are happy and then you cease to be.


  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

.oisyn schreef op woensdag 2 mei 2018 @ 02:50:
[...]


Algoritmiek is het grootste fundament van het programmeren. Als een "programmeur" bij deze puzzel niet tot een redelijk fatsoenlijke oplossing kan komen (en dan gaat het vooral om het gedachteproces, niet om of de code foutloos is) dan zal ik hem niet aannemen. En natuurlijk, het feit dat hij dat wél kan impliceert nog niet dat het dus een geschikte kandidaat is, maar een sollicitatiegesprek bestaat uit meer dan alleen het oplossen van een puzzel.
Ik bedoel ook niet dat iemand een goede programmeur zou kunnen zijn als iemand de test niet haalt. Het lijkt me duidelijk dat als iemand met zo'n opdrachtje niet iets redelijks kan verzinnen hij niet geschikt is :P

Het ging me er meer om wat je nu weet van iemand als hij tot iets redelijks komt. Het zegt verder niet zoveel over iemand behalve dat hij een gemiddelde huiswerkopdracht kan doorlopen. Maar je hebt natuurlijk gelijk als je zegt dat dit maar 1 onderdeel is van een sollicitatieprodedure

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 12:49

DevWouter

Creator of Todo2d.com

Lethalis schreef op woensdag 2 mei 2018 @ 08:45:
En dat zou ook voor mij dan ook 1 van de belangrijkste aspecten zijn bij het beoordelen van een sollicitant. De bereidheid om nieuwe dingen te leren en open te staan voor suggesties. Vooral ook bereid zijn om over het eigen ego heen te stappen en toe te geven dat je iets niet weet.
:Y Als je beter wilt worden dan is het vaak handig om te weten wat je verkeerd doet.
F.West98 schreef op woensdag 2 mei 2018 @ 02:58:
Betreft die puzzel: lekker kort en functioneel:
...

En dan uitvoeren met
split [1, 2, 3, 5, 4, 7, 6, 8, 9]

Hij kan nog iets korter (maar minder mooi imo):
...
_/-\o_ Nice!
EddoH schreef op woensdag 2 mei 2018 @ 09:06:
[...]


Ik bedoel ook niet dat iemand een goede programmeur zou kunnen zijn als iemand de test niet haalt. Het lijkt me duidelijk dat als iemand met zo'n opdrachtje niet iets redelijks kan verzinnen hij niet geschikt is :P

Het ging me er meer om wat je nu weet van iemand als hij tot iets redelijks komt. Het zegt verder niet zoveel over iemand behalve dat hij een gemiddelde huiswerkopdracht kan doorlopen. Maar je hebt natuurlijk gelijk als je zegt dat dit maar 1 onderdeel is van een sollicitatieprodedure
Ach, er zijn zoveel zaken waar het fout op kan gaan. Om maar een persoonlijke ervaring te delen.

Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel


  • Lethalis
  • Registratie: April 2002
  • Niet online
Jouw verhaal doet mij een beetje denken aan een sollicitatie die ik 10 jaar geleden heb gedaan bij een bedrijf in Delft.

Iemand vroeg mij of ik "volgens HTML standaarden" kon werken.

Dus ik beginnen over doctypes, CSS validatie, etc. De beste man keek mij wat glazig aan en vroeg uiteindelijk of ik wel netjes closing tags gebruikte _O-

Maar goed, 3 gesprekken daar gehad - voor een functie als .NET developer - en pas bij het allerlaatste gesprek begonnen ze erover dat ik "eerst een jaartje VB6 moest doen" en "ja de functie is in principe hier op locatie, maar in het begin moet je wel langs klanten in het land".

Ik stond tijdens het gesprek op, deed mijn jas aan, zei dat dit zonde van onze tijd en energie was en liep zo naar buiten :+

Ask yourself if you are happy and then you cease to be.


  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 21-12 00:53

ZaZ

Tweakers abonnee

Hee hee! Niet bitchen op VB6! Dan wordt EddoH boos :+

Lekker op de bank


  • Antrax
  • Registratie: April 2012
  • Laatst online: 20:43
DJMaze schreef op dinsdag 1 mei 2018 @ 21:47:
De directeur heeft wat uit te leggen :D
Na wat speurwerk zou het gaan om 'RocketIT'. Domeinnaam via TransIP en een VPS van TransIP (traceable via IP). Het allerergste vind ik, buiten alle giga veiligheidsfouten, dat het bedrijf niet eens bestaat, ook niet als handelsnaam :/

Het zal mij niet verbazen als hier een tiener achter zit die totaal niet weet waar hij/zij mee bezig is. Ik vermoed dat er nog veel bugs naar voren zullen komen. :X

Antje zal wel weer blij zijn;

[ Voor 7% gewijzigd door Antrax op 02-05-2018 12:18 ]

.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • Renzmeister
  • Registratie: Januari 2011
  • Laatst online: 22:52
Ik heb onlangs sollicitatiegesprekken gevoerd bij 3 verschillende bedrijven, en bij 2 van de 3 werd er (zowel expliciet als impliciet) gesuggereerd dat ik vanwege mijn cv nog werk zou kunnen gaan doen in technologie x of y, terwijl mijn ambities anders liggen. Ik heb uiteindelijk voor het 3e bedrijf gekozen, waar dat absoluut niet aan de orde was.

Ik vraag me soms af of ervaring weglaten uit je cv dan verstandiger is. Maar ook dat komt een beetje over als 'liegen' op je cv :)

  • BarôZZa
  • Registratie: Januari 2003
  • Nu online
Renzmeister schreef op woensdag 2 mei 2018 @ 12:19:
Ik heb onlangs sollicitatiegesprekken gevoerd bij 3 verschillende bedrijven, en bij 2 van de 3 werd er (zowel expliciet als impliciet) gesuggereerd dat ik vanwege mijn cv nog werk zou kunnen gaan doen in technologie x of y, terwijl mijn ambities anders liggen. Ik heb uiteindelijk voor het 3e bedrijf gekozen, waar dat absoluut niet aan de orde was.

Ik vraag me soms af of ervaring weglaten uit je cv dan verstandiger is. Maar ook dat komt een beetje over als 'liegen' op je cv :)
Zaken weglaten die voor jou niet relevant meer zijn is niet liegen. Liegen is zaken erop zetten die niet kloppen.

Beide partijen hebben er niks aan als de verwachtingen niet op elkaar aansluiten.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
Renzmeister schreef op woensdag 2 mei 2018 @ 12:19:
Ik vraag me soms af of ervaring weglaten uit je cv dan verstandiger is. Maar ook dat komt een beetje over als 'liegen' op je cv :)
M'n CV en LinkedIn zijn getailored naar de jobs die ik wil, en niet naar de jobs waarvan andere mensen willen dat ik ze wil ;)

https://niels.nu


  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

ZaZ schreef op woensdag 2 mei 2018 @ 12:05:
Hee hee! Niet bitchen op VB6! Dan wordt EddoH boos :+
Lethalis schreef op woensdag 2 mei 2018 @ 11:35:
[...]
Ik stond tijdens het gesprek op, deed mijn jas aan, zei dat dit zonde van onze tijd en energie was en liep zo naar buiten :+
Iemand met een dergelijke minachting voor VB6 verdient niet eens een baan! Goed dat je opgestaan bent om het bedrijf te behoeden voor zo'n kortzichtige werknemer :Y)

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 21-12 00:53

ZaZ

Tweakers abonnee

Antrax schreef op woensdag 2 mei 2018 @ 12:18:
[...]
Antje zal wel weer blij zijn;

[video]
Op Facebook heb je 'vind ik leuk' en dat vind ik leuk, maar op Hyves kan je echt 'respect' geven
Haha

Lekker op de bank


  • BarôZZa
  • Registratie: Januari 2003
  • Nu online
DevWouter schreef op dinsdag 1 mei 2018 @ 12:58:
[...]

code:
1
2
3
4
5
6
7
8
9
10
var input = [1, 2, 3, 5, 4,7,6,8, 9];
var expect = [
  [1, 2, 3, 5],
  [4, 7],
  [6, 8, 9]
];

// Implementeer de functie, geef een lijst van reeksen terug op basis van de input. 
// Elke keer als het volgende getal niet oplopend is begin je een nieuwe reeks.
var actual = func(input);
Toch maar even de opdracht gemaakt.

JavaScript:
1
2
3
4
5
6
7
var input = [1, 2, 3, 5, 4,7,6,8, 9];

func = function(input){
    return Object.keys(input).filter(function(val, i, arr){return !i || this[val] <= this[arr[i - 1]];}.bind(input)).map(function(val, i, arr){return this.slice(val, arr[i + 1])}.bind(input));
}

var actual = func(input);

8)

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 12:49

DevWouter

Creator of Todo2d.com

Renzmeister schreef op woensdag 2 mei 2018 @ 12:19:
Ik heb onlangs sollicitatiegesprekken gevoerd bij 3 verschillende bedrijven, en bij 2 van de 3 werd er (zowel expliciet als impliciet) gesuggereerd dat ik vanwege mijn cv nog werk zou kunnen gaan doen in technologie x of y, terwijl mijn ambities anders liggen. Ik heb uiteindelijk voor het 3e bedrijf gekozen, waar dat absoluut niet aan de orde was.

Ik vraag me soms af of ervaring weglaten uit je cv dan verstandiger is. Maar ook dat komt een beetje over als 'liegen' op je cv :)
Dat klinkt als een simpel verhaal: Als jouw wensen niet aansluiten op het bedrijf dan is er gewoon geen match. De huidige programmeermarkt is een keuzemarkt voor werknemers dus neem gewoon je tijd en wees ook niet bang om bedrijven te benaderen waar je graag zou willen werken ook al zijn ze niet op zoek.

En zet op je CV wat jij wilt verkopen.
BarôZZa schreef op woensdag 2 mei 2018 @ 13:31:
[...]


Toch maar even de opdracht gemaakt.

JavaScript:
1
2
3
4
5
6
7
var input = [1, 2, 3, 5, 4,7,6,8, 9];

func = function(input){
    return Object.keys(input).filter(function(val, i, arr){return (!i || this[val] <= this[arr[i - 1]]);}.bind(input)).map(function(val, i, arr){return this.slice(val, i === arr.length - 1 ? undefined : arr[i + 1])}.bind(input));
}

var actual = func(input);

8)
Oh... F-you! Het valt me nog mee dat je het niet door een compressor heb gehaald! _O-

"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:18

orf

BarôZZa schreef op woensdag 2 mei 2018 @ 13:31:
[...]


Toch maar even de opdracht gemaakt.

JavaScript:
1
2
3
4
5
6
7
var input = [1, 2, 3, 5, 4,7,6,8, 9];

func = function(input){
    return Object.keys(input).filter(function(val, i, arr){return (!i || this[val] <= this[arr[i - 1]]);}.bind(input)).map(function(val, i, arr){return this.slice(val, arr[i + 1])}.bind(input));
}

var actual = func(input);

8)
Kort stukje code, maar ik heb wel erg veel moeite om dat te volgen als ik even achterwege laat wat de functie moet doen. Ik vind zoiets old schools dan een stuk leesbaarder (of ligt dat aan mij)?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func = function(input){

    var result = [], key = -1;

    for (var i=0; i < input.length; i++){

        if (!input[i - 1] || input[i] < input[i - 1]){
            key++;
            result[key] = [];
        }
        result[key].push(input[i]);
    }

    return result;
};

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20:24

Matis

Rubber Rocket

orf schreef op woensdag 2 mei 2018 @ 13:48:
[...]


Kort stukje code, maar ik heb wel erg veel moeite om dat te volgen als ik even achterwege laat wat de functie moet doen. Ik vind zoiets old schools dan een stuk leesbaarder (of ligt dat aan mij)?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func = function(input){

    var result = [], key = -1;

    for (var i=0; i < input.length; i++){

        if (!input[i - 1] || input[i] < input[i - 1]){
            key++;
            result[key] = [];
        }
        result[key].push(input[i]);
    }

    return result;
};
Je haalt de woorden uit mijn mond. Mooi voorbeeld dat minder niet altijd beter is.

Daar ik weinig tot geen JS kennis heb, kan ik jouw code vele malen beter volgen dan de oneliner van onze guru hierboven :p

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


  • Ryur
  • Registratie: December 2007
  • Laatst online: 22:04
BarôZZa schreef op woensdag 2 mei 2018 @ 13:31:
[...]


Toch maar even de opdracht gemaakt.

JavaScript:
1
2
3
4
5
6
7
var input = [1, 2, 3, 5, 4,7,6,8, 9];

func = function(input){
    return Object.keys(input).filter(function(val, i, arr){return !i || this[val] <= this[arr[i - 1]];}.bind(input)).map(function(val, i, arr){return this.slice(val, arr[i + 1])}.bind(input));
}

var actual = func(input);

8)
Werkelijk schitterend! Zo schitterend dat het onleesbaar is! _/-\o_

  • Lethalis
  • Registratie: April 2002
  • Niet online
EddoH schreef op woensdag 2 mei 2018 @ 13:14:
[...]
Iemand met een dergelijke minachting voor VB6 verdient niet eens een baan! Goed dat je opgestaan bent om het bedrijf te behoeden voor zo'n kortzichtige werknemer :Y)
_O-

Met VB5 heb ik (toen ik 15 was) mijn eerste serieuze project gedaan voor het bedrijf van mijn vader. Het was een Windows applicatie waar mensen verschillende typen brandwerende deuren konden selecteren op basis van gegevens in een Access database. Vervolgens kon je allerlei maten instellen van de deuren die je wou hebben en genereerde het programma een AutoCAD script waarmee automatisch alle technische tekeningen werden gegenereerd.

Het programma verving 3 tekenaars bij onze opdrachtgever :X

Heb dus eigenlijk veel te danken aan VB. Maar goed... ik zou toch echt nooit meer terug willen :P

Ask yourself if you are happy and then you cease to be.


  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 21-12 00:53

ZaZ

Tweakers abonnee

Lethalis schreef op woensdag 2 mei 2018 @ 14:01:
[...]

_O-

Met VB5 heb ik (toen ik 15 was) mijn eerste serieuze project gedaan voor het bedrijf van mijn vader. Het was een Windows applicatie waar mensen verschillende typen brandwerende deuren konden selecteren op basis van gegevens in een Access database. Vervolgens kon je allerlei maten instellen van de deuren die je wou hebben en genereerde het programma een AutoCAD script waarmee automatisch alle technische tekeningen werden gegenereerd.

Het programma verving 3 tekenaars bij onze opdrachtgever :X

Heb dus eigenlijk veel te danken aan VB. Maar goed... ik zou toch echt nooit meer terug willen :P
Ik ook als tiener in eind jaren negentig in VB6 een applicatie gemaakt die het makkelijker maakte om APK formulieren (gebruikt in garages) in te vullen. Dat moest altijd met de hand worden gedaan op carbonpapier.
Er was wel een hoop wat makkelijker en sneller kon door er een database achter te hangen en door tekstveldjes te rammen en automatisch aanvullen etc.
Alleen dat stomme carbonpapier.... Ik kon ergens een partij nieuwe matrixprinters heel goedkoop kopen (matrixprinters waren destijds al hard op retour) en verkocht ik mijn applicatie + printer aan autogarages.
Nieuwe printer kostte me 75 gulden en de applicatie verkocht ik samen met printer voor 500 gulden.
Mijn eerste stapjes in het ondernemerschap.

Lekker op de bank


  • Lethalis
  • Registratie: April 2002
  • Niet online
ZaZ schreef op woensdag 2 mei 2018 @ 14:17:
[...]
Mijn eerste stapjes in het ondernemerschap.
Mij leverde het destijds alleen een nieuwe computer op (voor 1000 gulden ex btw) :+

Maar goed, ik deed het daar wel voor in de zomervakantie en het was leuker dan schappen vullen bij de supermarkt.

Mijn vader verdiende er natuurlijk veel meer mee.

Zakelijk inzicht had ik toen nog niet. Ik wou gewoon een nieuwe PC om op te gamen _O-

Ask yourself if you are happy and then you cease to be.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 19-12 22:44
DevWouter schreef op dinsdag 1 mei 2018 @ 12:58:
[...]
Een test die een goeie vriend van mij hanteert is een unit test die opgelost moet worden.
code:
1
2
3
4
5
6
7
8
9
10
var input = [1, 2, 3, 5, 4,7,6,8, 9];
var expect = [
  [1, 2, 3, 5],
  [4, 7],
  [6, 8, 9]
];

// Implementeer de functie, geef een lijst van reeksen terug op basis van de input. 
// Elke keer als het volgende getal niet oplopend is begin je een nieuwe reeks.
var actual = func(input);


Een behoorlijk aantal van de kandidaten schijnt hier al moeite mee te hebben en een paar van de oplossingen die aan hem getoond werden sloegen nergens op.
Visual Basic 6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Private Sub Vb6Rules()

  Dim Src(0 To 8) As Integer
  Src(0) = 1
  Src(1) = 2
  Src(2) = 3
  Src(3) = 5
  Src(4) = 4
  Src(5) = 7
  Src(6) = 6
  Src(7) = 8
  Src(8) = 9
  
  Dim Dst()
  ReDim Dst(0 To 0)
  
  Dim SrcIx As Integer: SrcIx = 0
  
  Dim T() As Integer
  ReDim T(0 To 0)
  Dim DstIx As Integer: DstIx = 0
  
  Do
  
    T(DstIx) = Src(SrcIx)
    DstIx = DstIx + 1
    SrcIx = SrcIx + 1
    
    If SrcIx <= UBound(Src) Then
      If Src(SrcIx) < Src(SrcIx - 1) Then
        Dst(UBound(Dst)) = T
        ReDim Preserve Dst(0 To UBound(Dst) + 1)
        
        ReDim T(0 To 0)
        
        DstIx = 0
      Else
        ReDim Preserve T(UBound(T) + 1)
      End If
    
    Else
      Dst(UBound(Dst)) = T
    End If
    
  Loop While SrcIx <= UBound(Src)
End Sub


Weer een half uur van mijn leven verspild. }:|

Heb ik de baan?

Jullie lijken wel een stel pubers in de kleedkamer; alleen maar er over praten. Ik doe het gewoon. >:)

[ Voor 4% gewijzigd door farlane op 02-05-2018 14:58 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lethalis
  • Registratie: April 2002
  • Niet online
farlane schreef op woensdag 2 mei 2018 @ 14:43:
[...]
Kon het niet laten. Weer een half uur van mijn leven verspild. }:|
My eyes hurt :P

Ik moest ook echt even denken, omdat het zolang geleden is.

Maar goed, je vult dus elke keer een tijdelijke array T die je aan Dst toevoegt.

Het leuke hiervan is dat er veel optimalisaties mogelijk zijn. Je zou bijvoorbeeld het aantal ReDim's kunnen terugbrengen door met een buffer size te werken en T pas op het eind passend te maken.

Het zijn van die dingen die je normaal gesproken nooit meer hoeft te doen, maar nog wel op de achtergrond gebeuren in moderne talen.

Ask yourself if you are happy and then you cease to be.


  • BarôZZa
  • Registratie: Januari 2003
  • Nu online
orf schreef op woensdag 2 mei 2018 @ 13:48:
[...]


Kort stukje code, maar ik heb wel erg veel moeite om dat te volgen als ik even achterwege laat wat de functie moet doen. Ik vind zoiets old schools dan een stuk leesbaarder (of ligt dat aan mij)?
Ligt niet aan jou, dat is ook gewoon een stuk leesbaarder. Ik had alleen even zin om het op te lossen zonder onnodige loops, variabelen en if statements En om het op één regel te knikkeren ;) .

Al ben ik overigens wel een fan van array functies. Als je het een beetje netjes neerzet en callback functies een naampje geeft, dan is het een stuk leesbaarder en compacter dan een loop die een nieuwe array gaat vullen:


JavaScript:
1
2
3
4
5
6
7
var input=[1,2,3,5,4,7,6,8,9];

function isEven(value){
  return (value % 2 === 0);
}

var evenNumbers = input.filter(isEven);


Maar om een of andere reden lijken sommige developers altijd (geneste) for loops te willen gebruiken als ze arrays tegenkomen.

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23:08
Lethalis schreef op woensdag 2 mei 2018 @ 15:01:
[...]

Het zijn van die dingen die je normaal gesproken nooit meer hoeft te doen, maar nog wel op de achtergrond gebeuren in moderne talen.
Wat ook meteen een valkuil is. Veel (nieuwe) programmeurs hebben er geen idee van wat er op de achtergrond gebeurd als ze een ArrayList of een std::vector gebruiken, en het kan een behoorlijke performance impact hebben als het (door verkeerd gebruik) constant aan het resizen is.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 19-12 22:44
Lethalis schreef op woensdag 2 mei 2018 @ 15:01:
[...]
Het leuke hiervan is dat er veel optimalisaties mogelijk zijn.
Geen VB6 gebruiken is de belangrijkste me dunkt :P

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Merlinni
  • Registratie: September 2012
  • Laatst online: 14-12 05:02
Zodra je het een beetje normal format vind ik het goed leesbaar en te begrijpen. Door niet alles te binden en gewoon 'input' te gebruiken is het ook makkelijker te zien waar je nou mee bezig bent.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
let input = [1, 2, 3, 5, 4,7,6,8, 9];

func = (input) => {
  return Object.keys(input).filter(function(val, i, arr) {
    return (!i || input[val] <= input[arr[i - 1]]);
  }).map(function(val, i, arr) {
    return input.slice(val, arr[i + 1])
  });
}

var actual = func(input);

Als je hier wat documentatie bij zet is het helemaal perfect.

Vind dit toch een hele mooie oplossing, @BarôZZa _/-\o_

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12 21:27
Hydra schreef op woensdag 2 mei 2018 @ 12:43:
[...]


M'n CV en LinkedIn zijn getailored naar de jobs die ik wil, en niet naar de jobs waarvan andere mensen willen dat ik ze wil ;)
Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

We are shaping the future


  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 21-12 04:21

F.West98

Alweer 16 jaar hier

RayNbow schreef op woensdag 2 mei 2018 @ 07:25:
[...]

Wat gebeurt als je daar een lege lijst ingooit? :p
Dan doet ie 't niet ;)
[...]

Kun je de type-annotaties generieker maken?
Kun je een versie verzinnen die werkt met oneindige lijsten?
Ja dat kan, maar ik wist zo snel niet meer hoe die typesclasses zaten (al een half jaar niets meer mee gedaan), maar ja je kan je type aanpassen naar split :: (Ord a) => [a] -> [[a]] (en vergelijkbaar in de decide). En ja, het kan ook met oneindige lijsten:
Haskell:
1
2
3
4
5
6
7
8
split :: (Ord a) => [a] -> [[a]]
split (x:xs) = map reverse $ splitHelper x xs []

splitHelper :: (Ord a) => a -> [a] -> [a] -> [[a]]
splitHelper n [] ys = [(n:ys)]
splitHelper n (x:xs) ys
 | n > x = (n:ys) : splitHelper x xs []
 | n <= x = splitHelper x xs (n:ys)


imo is deze zelfs nog een stuk netter dan de vorige oplossing

[ Voor 3% gewijzigd door F.West98 op 02-05-2018 16:18 ]

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


  • Pizzalucht
  • Registratie: Januari 2011
  • Laatst online: 21-12 08:29

Pizzalucht

Snotneus.

Wat een verassing.
Ik krijg een mailtje van Bonque over de AVG. Ik heb pas 10 keer gezegd dat ze mij uit hun systeem moeten verwijderen, blijkt nu dus dat ze dat nooit hebben gedaan. Hoop dat ze me nu automatisch verwijderen omdat ik niet akkoord ga.

Hoop dat dit dan het laatste mailtje is wat ik ooit van ze krijg :)

  • Ryada
  • Registratie: Oktober 2012
  • Laatst online: 05-12 15:14

Ryada

She/Her

Pizzalucht schreef op woensdag 2 mei 2018 @ 17:27:
Wat een verassing.
Ik krijg een mailtje van Bonque over de AVG. Ik heb pas 10 keer gezegd dat ze mij uit hun systeem moeten verwijderen, blijkt nu dus dat ze dat nooit hebben gedaan. Hoop dat ze me nu automatisch verwijderen omdat ik niet akkoord ga.

Hoop dat dit dan het laatste mailtje is wat ik ooit van ze krijg :)
Ik heb hetzelfde probleem gehad, en hoor meer mensen over hun klagen dat ze constant gecontacteerd worden door hun nadat ze 1 keer met hun in zee zijn gegaan. Bij mij was het opgelost nadat ik een keer helemaal niet gereageerd had op een mail van hun maar dat kan ook toeval zijn.

Steam: Ryada.


  • Pizzalucht
  • Registratie: Januari 2011
  • Laatst online: 21-12 08:29

Pizzalucht

Snotneus.

Ryada schreef op woensdag 2 mei 2018 @ 17:29:
[...]

Ik heb hetzelfde probleem gehad, en hoor meer mensen over hun klagen dat ze constant gecontacteerd worden door hun nadat ze 1 keer met hun in zee zijn gegaan. Bij mij was het opgelost nadat ik een keer helemaal niet gereageerd had op een mail van hun maar dat kan ook toeval zijn.
Ik werd constant door ze gebeld omdat ik ook een keer dacht dat het interessant kon zijn. Elke keer daarna gezegd dat ze me moesten verwijderen omdat ik geen interesse had. Na de eerste keer kreeg ik een paar keer het excuus "het CRM-systeem heeft problemen", daarna werd ik niet meer gebeld. Maar blijkbaar hebben ze me niet echt verwijderd.

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 21:59

AW_Bos

Liefhebber van nostalgie... 🕰️

Antrax schreef op woensdag 2 mei 2018 @ 12:18:
[...]

Na wat speurwerk zou het gaan om 'RocketIT'. Domeinnaam via TransIP en een VPS van TransIP (traceable via IP). Het allerergste vind ik, buiten alle giga veiligheidsfouten, dat het bedrijf niet eens bestaat, ook niet als handelsnaam :/

Het zal mij niet verbazen als hier een tiener achter zit die totaal niet weet waar hij/zij mee bezig is. Ik vermoed dat er nog veel bugs naar voren zullen komen. :X

Antje zal wel weer blij zijn;

[video]
Zijn een paar studenten. Ik lees nu zelfs dat ze bijstand krijgen van een hostingbedrijf die ze wat sponsort.
het is en blijft een trage bende, ik ben benieuwd hoe hun technische skills liggen. Je moet de site immers makkelijk kunnen schalen. Ik ken de PHPsocial-source niet, maar ik denk dat je toch best wel wat moet herbouwen om dit mogelijk te maken.

Ik ga dit prutsproject geen weken meer geven! :P

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Swedish Clown
  • Registratie: November 2010
  • Laatst online: 10-04 22:41

Swedish Clown

Erlang <3

Mijn oplossing dan ook maar :)

Erlang: Dag 1
1
2
3
4
5
6
7
8
9
10
11
-module(puzzle).

-export([short/1]).

short(Input) ->
  short(Input, [], []).

short([], A, _) -> A;
short([H], A, CA) -> A ++  [CA ++ [H]];
short([H,T|Tail], A, CA) when H < T -> short([T|Tail], A, CA ++ [H]);
short([H,T|Tail], A, CA) -> short([T|Tail], A ++ [CA ++ [H]], []).


Ik hou wel van dit soort puzzles :P Niet de mooiste oplossing maar lekker code golfen in Erlang aan het einde van een chaotische dag :+ De oplossing kan zeker leesbaarder _O-

[ Voor 3% gewijzigd door Swedish Clown op 02-05-2018 18:23 ]

Always looking for developers wanting to work with Erlang.


  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Pizzalucht schreef op woensdag 2 mei 2018 @ 17:27:
Wat een verassing.
Ik krijg een mailtje van Bonque over de AVG. Ik heb pas 10 keer gezegd dat ze mij uit hun systeem moeten verwijderen, blijkt nu dus dat ze dat nooit hebben gedaan. Hoop dat ze me nu automatisch verwijderen omdat ik niet akkoord ga.

Hoop dat dit dan het laatste mailtje is wat ik ooit van ze krijg :)
Ik had precies dezelfde reactie!
Jaren geleden al meerdere malen aan hun aangegeven dat ze moesten stoppen mij te spammen met telefoontjes en mailtjes. Ze zouden me verwijderen werd er toen gezegd...en dan nu die mail.

Overigens kan je enkel op de akkoord knop drukken in de mail...nergens staat expleciet aangegeven dat ze je gaan verwijderen als je de mail negeert... We gaan het meemaken

  • Pizzalucht
  • Registratie: Januari 2011
  • Laatst online: 21-12 08:29

Pizzalucht

Snotneus.

TripleQ schreef op woensdag 2 mei 2018 @ 19:11:
[...]


Ik had precies dezelfde reactie!
Jaren geleden al meerdere malen aan hun aangegeven dat ze moesten stoppen mij te spammen met telefoontjes en mailtjes. Ze zouden me verwijderen werd er toen gezegd...en dan nu die mail.

Overigens kan je enkel op de akkoord knop drukken in de mail...nergens staat expleciet aangegeven dat ze je gaan verwijderen als je de mail negeert... We gaan het meemaken
Ik heb ze een reactie gestuurd dat ik niet akkoord ga (en dat ik dus verwacht dat ze me verwijderen). Ook vermeld dat het raar is dat er alleen een knop is om te accepteren.

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 20:35

RayNbow

Kirika <3

F.West98 schreef op woensdag 2 mei 2018 @ 16:18:
[...]

Ja dat kan, maar ik wist zo snel niet meer hoe die typesclasses zaten (al een half jaar niets meer mee gedaan), maar ja je kan je type aanpassen naar split :: (Ord a) => [a] -> [[a]] (en vergelijkbaar in de decide). En ja, het kan ook met oneindige lijsten:
Haskell:
1
2
3
4
5
6
7
8
split :: (Ord a) => [a] -> [[a]]
split (x:xs) = map reverse $ splitHelper x xs []

splitHelper :: (Ord a) => a -> [a] -> [a] -> [[a]]
splitHelper n [] ys = [(n:ys)]
splitHelper n (x:xs) ys
 | n > x = (n:ys) : splitHelper x xs []
 | n <= x = splitHelper x xs (n:ys)


imo is deze zelfs nog een stuk netter dan de vorige oplossing
Zelf heb ik eerder vandaag de volgende implementatie in elkaar gedraaid, zonder expliciete recursie en iets generieker:
Haskell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{-# LANGUAGE LambdaCase #-}
import Data.List (unfoldr)


both :: (a -> b) -> (a,a) -> (b,b)
both f (x,y) = (f x, f y)

withPrevious :: [a] -> [(a, Maybe a)]
withPrevious xs = zip xs (Nothing : map Just xs)


splitWhenPrev :: (a -> a -> Bool) -> [a] -> [[a]]
splitWhenPrev p = unfoldr f
  where f [] = Nothing
        f seed = Just 
               . both (map fst)
               . break (\case (a, Just b) -> p b a
                              _           -> False)
               . withPrevious 
               $ seed


Gebruik:
ghci> splitWhenPrev (>=) [1, 2, 3, 5, 4, 7, 6, 8, 9]
[[1,2,3,5],[4,7],[6,8,9]]
ghci> take 5 $ splitWhenPrev (>=) [x | k <- [1..], x <- [1..k]]
[[1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5]]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 21-12 04:21

F.West98

Alweer 16 jaar hier

RayNbow schreef op woensdag 2 mei 2018 @ 20:50:
[...]


Zelf heb ik eerder vandaag de volgende implementatie in elkaar gedraaid, zonder expliciete recursie en iets generieker:
Haskell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{-# LANGUAGE LambdaCase #-}
import Data.List (unfoldr)


both :: (a -> b) -> (a,a) -> (b,b)
both f (x,y) = (f x, f y)

withPrevious :: [a] -> [(a, Maybe a)]
withPrevious xs = zip xs (Nothing : map Just xs)


splitWhenPrev :: (a -> a -> Bool) -> [a] -> [[a]]
splitWhenPrev p = unfoldr f
  where f [] = Nothing
        f seed = Just 
               . both (map fst)
               . break (\case (a, Just b) -> p b a
                              _           -> False)
               . withPrevious 
               $ seed
Pff daar gaat een heleboel magie in zitten. Zó goed ken ik de Haskell API nou ook weer niet, met die unfoldr en de break O-)

Overigens:
spoiler:
alternating = 0 : 1 : alternating
--
*Main> (splitWhenPrev (>=) alternating)!!10000
[0,1]
(39.06 secs, 31,937,649,720 bytes)
*Main> (splitinf alternating)!!10000
[0,1]
(0.00 secs, 5,866,840 bytes)
*Main> (splitinf alternating)!!10000000
[0,1]
(6.66 secs, 5,760,106,328 bytes)

;) O-)

[ Voor 3% gewijzigd door F.West98 op 02-05-2018 22:00 ]

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 20:35

RayNbow

Kirika <3

F.West98 schreef op woensdag 2 mei 2018 @ 21:59:
Overigens:
spoiler:
alternating = 0 : 1 : alternating
--
*Main> (splitWhenPrev (>=) alternating)!!10000
[0,1]
(39.06 secs, 31,937,649,720 bytes)
*Main> (splitinf alternating)!!10000
[0,1]
(0.00 secs, 5,866,840 bytes)
*Main> (splitinf alternating)!!10000000
[0,1]
(6.66 secs, 5,760,106,328 bytes)

;) O-)
Niet heel verrassend, gezien de hoeveelheid tussenstappen die niet gemakkelijk weg kunnen worden gecompileerd. :p

spoiler:
C:\tmp>splitwhen 10000 +RTS -sstderr
[0,1]
31,920,274,192 bytes allocated in the heap
38,587,364,152 bytes copied during GC
1,796,296 bytes maximum residency (18526 sample(s))
287,584 bytes maximum slop
5 MB total memory in use (0 MB lost due to fragmentation)

Tot time (elapsed) Avg pause Max pause
Gen 0 31964 colls, 0 par 24.453s 25.937s 0.0008s 0.0292s
Gen 1 18526 colls, 0 par 25.438s 25.289s 0.0014s 0.0376s

INIT time 0.000s ( 0.000s elapsed)
MUT time 12.703s ( 12.738s elapsed)
GC time 49.891s ( 51.227s elapsed)
EXIT time 0.000s ( 0.001s elapsed)
Total time 62.609s ( 63.966s elapsed)

%GC time 79.7% (80.1% elapsed)

Alloc rate 2,512,789,112 bytes per MUT second

Productivity 20.3% of total user, 19.9% of total elapsed


C:\tmp>splitwhen 1000 +RTS -sstderr
[0,1]
290,033,936 bytes allocated in the heap
48,429,344 bytes copied during GC
67,744 bytes maximum residency (2 sample(s))
26,568 bytes maximum slop
2 MB total memory in use (0 MB lost due to fragmentation)

Tot time (elapsed) Avg pause Max pause
Gen 0 489 colls, 0 par 0.031s 0.045s 0.0001s 0.0003s
Gen 1 2 colls, 0 par 0.000s 0.000s 0.0002s 0.0002s

INIT time 0.000s ( 0.000s elapsed)
MUT time 0.078s ( 0.063s elapsed)
GC time 0.031s ( 0.046s elapsed)
EXIT time 0.000s ( 0.000s elapsed)
Total time 0.109s ( 0.109s elapsed)

%GC time 28.6% (41.8% elapsed)

Alloc rate 3,712,434,380 bytes per MUT second

Productivity 71.4% of total user, 71.5% of total elapsed


P.S.: alternating = cycle [0,1]

[ Voor 63% gewijzigd door RayNbow op 02-05-2018 22:29 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Ik kon het ook niet laten :) Niet het mooiste wat ik ooit geschreven heb, maar wel iets dat ik redelijk snel kan reproduceren en uitleggen aan iemand die naast me zit.
Scala:
1
2
3
4
5
6
7
8
9
10
def func(in: List[Int],
         current: List[Int] = List(),
         res: List[List[Int]] = List()): List[List[Int]] = in match {
  case el1 :: el2 :: end if el2 < el1 =>
    func(el2 :: end, List(), (el1 :: current).reverse :: res)
  case el :: end =>
    func(end, el :: current, res)
  case Nil =>
    (current.reverse :: res).reverse
}

  • Lethalis
  • Registratie: April 2002
  • Niet online
Ik heb nog een boek over Haskell liggen, omdat ik het (en functioneel programmeren in het algemeen) een keer goed wil leren (Learn you a Haskell for great good).

...
..
.

Maar het ligt er al een tijdje :X

Momenteel Refactoring van Martin Fowler aan het lezen, dat dan weer wel.

Ask yourself if you are happy and then you cease to be.


  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Voor wie 'm nog niet gezien had, XKCD is vandaag weer spot on

Afbeeldingslocatie: https://imgs.xkcd.com/comics/containers.png

Bijschrift is helemaal hilarisch
All services are microservices if you ignore most of their features.

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • Hydra
  • Registratie: September 2000
  • Laatst online: 17-12 14:27
Ik vond 'em nogal kort door de bocht eerlijk gezegd.

https://niels.nu


  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 12:49

DevWouter

Creator of Todo2d.com

mindcrash schreef op donderdag 3 mei 2018 @ 13:12:
Voor wie 'm nog niet gezien had, XKCD is vandaag weer spot on

[afbeelding]

Bijschrift is helemaal hilarisch


[...]
Huh... Ik heb ooit een programma geschreven waarbij de gebruiker tussen cameras moest schakelen, hier moesten wij verschillende third-party dlls voor gebruiken (verschillende merken). Niks complex, maar elke keer als we het beeld ophaalde van merk B nadat we eerste verbonden waren met merk A (of andersom) crashte de applicatie.

(De software werkte met 6~7 verschillende merken, maar om één of andere reden waren er twee die elkaar continue in de weg zaten)

Toen ik dit aan mijn baas vertelde het niet mogelijk was zei hij dat ik die camera's dan als een aparte applicatie moest starten.
"Ja, maar... Het is toch 1 applicatie!?"
"Dan zorg je toch dat het icoon niet in de taakbalk verschijnt, niemand die het ziet."
"Maar... Maar... Maar..." stamelde ik.

Enfin, een week later en met wat geknutsel hadden we het voor elkaar. Je kon het verschil inderdaad niet zien met wat een week eerder hadden (behalve dat het niet langer crashte). Bij elke situatie die we bedachte (moven, resizen, sluiten, killen, andere applicaties er over slepen) was het voor oog niet zichtbaar dat we verschillende applicaties over de hoofd-applicatie hadden. Alleen in de taskmanager zag je dat er wat meer applicaties draaide.

Een paar maanden later kwam Chrome/Firefox met het multi-app model. Mijn baas zonder programmeer ervaring was gewoon slimmer dan al die slimme koppen bij Mozilla en Google :)

"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel


  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 19:08
Hydra schreef op donderdag 3 mei 2018 @ 14:11:
Ik vond 'em nogal kort door de bocht eerlijk gezegd.
Ik vind het wel een mooie typering van wat er mis is met helaas een vrij groot percentage van de software-ontwikkelaars. Begrip is heel erg ondergeschikt aan 'als het maar werkt'. Leuk voor de korte termijn, maar problematisch op de wat langere termijn.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19:44

alienfruit

the alien you never expected

Hoogtijd om eens naar GDPR te kijken 😇 Een `isDeleted`-flag zou vast niet goed genoeg zijn

Hmm, misschien isDeleted en vervolgens klantgegevens veranderen 'User deleted' zou misschien kunnen werken. We kunnen officieel toch niet verwijderde gebruikers heractiveren (alleen via SQL en isDeleted op FALSE zetten)

[ Voor 53% gewijzigd door alienfruit op 03-05-2018 18:42 ]


  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23:08
alienfruit schreef op donderdag 3 mei 2018 @ 18:31:
Hoogtijd om eens naar GDPR te kijken 😇 Een `isDeleted`-flag zou vast niet goed genoeg zijn

Hmm, misschien isDeleted en vervolgens klantgegevens veranderen 'User deleted' zou misschien kunnen werken. We kunnen officieel toch niet verwijderde gebruikers heractiveren (alleen via SQL en isDeleted op FALSE zetten)
Vaak kunnen database records ook niet eens verwijderd worden, omdat ze de gekoppeld zijn aan allemaal andere records en dus problemen gaat geven en/of bepaalde gegevens alsnog bewaard moeten blijven door andere wetgeving (bijvoorbeeld financiele gegevens een aantal jaar, voor de belastingdienst). Wij geven aan dat de rijen verwijderd zijn, en dus niet meer zichtbaar in het systeem. Standaard werden een aantal gegevens al geanonimiseerd na een bepaald termijn, door AVG/GDPR zullen de meeste gegevens direct moeten worden geschoond. Het enige 'nadeel' is dat wij alles auditten, en dus een complete history aanwezig is van wanneer iets gewijzigd is en wie dat geeft gedaan met oude en nieuwe waarden, wat jaren terug gaat, waar dat ook allemaal uit moet. Dan zijn er ook nog backups van alles, weleenswaar versleuteld, waar het vervolgens nog wel gewoon in zit; en dus binnen een bepaald termijn ook moet worden geschoond.

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 19:08
Zolang je records maar gekoppeld zijn op sleutels die geen persoonlijke gegevens bevatten is er weinig aan de hand. Bij audit / event logs wordt het alweer wat lastiger. Daar zou ik ook eerder gaan voor iets als versleuteling.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 10-12 09:56

Douweegbertje

Wat kinderachtig.. godverdomme

Recent had ik een aantal sites onder de loep genomen en best geschrokken over hoe lek die eigenlijk zijn. Gebruik makend van headless technieken maar nog niet helemaal de implicaties begrijpen..

Uiteindelijk op medium een stukje geschreven; https://medium.com/@wiard...also-leaking-6b32b186adf4

Herkennen jullie dit ook? Zelf ervaring mee?

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 17-12 10:53
alienfruit schreef op donderdag 3 mei 2018 @ 18:31:
Hoogtijd om eens naar GDPR te kijken 😇 Een `isDeleted`-flag zou vast niet goed genoeg zijn
Volgens de juridische afdeling hier: nee. De gegevens moeten niet meer herleidbaar kunnen zijn tot personen. Opties zijn dus verwijderen of anonimiseren. Maskeren is niet genoeg :)

Read the code, write the code, be the code!


  • Ryada
  • Registratie: Oktober 2012
  • Laatst online: 05-12 15:14

Ryada

She/Her

Beetje jammer, ik helemaal blij dat mijn laptop deze week binnen is gekomen, dus denk ik gooi er een paar testjes overheen en wat real world load. Word hij 70 graden als ik een beetje aan het browsen ben en 100 graden als ik aan het gamen ben.
Dus nu mag ik straks lekker met support gaan lopen praten over dat ik een vervangende laptop wil ivm koeling problemen.

Steam: Ryada.


  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
wackmaniac schreef op vrijdag 4 mei 2018 @ 09:01:
[...]


Volgens de juridische afdeling hier: nee. De gegevens moeten niet meer herleidbaar kunnen zijn tot personen. Opties zijn dus verwijderen of anonimiseren. Maskeren is niet genoeg :)
Wat dan te doen als ze gekoppeld zijn met gegevens die je 7 jaar voor de fiscus moet bewaren?:S

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 17-12 10:53
hackerhater schreef op vrijdag 4 mei 2018 @ 09:07:
[...]


Wat dan te doen als ze gekoppeld zijn met gegevens die je 7 jaar voor de fiscus moet bewaren?:S
Anonimiseren. Jij hoeft voor de fiscus geen naam en toenaam te geven voor gebruikers. Facturen etc. hoef je niet te verwijderen, als je die maar niet kan herleiden tot een specifiek persoon.

Let wel, ik ben geen jurist. Heb deze kennis van de juristen hier op kantoor.

[ Voor 8% gewijzigd door wackmaniac op 04-05-2018 09:14 ]

Read the code, write the code, be the code!


  • gekkie
  • Registratie: April 2000
  • Laatst online: 12:30
wackmaniac schreef op vrijdag 4 mei 2018 @ 09:13:
[...]


Anonimiseren. Jij hoeft voor de fiscus geen naam en toenaam te geven voor gebruikers. Facturen etc. hoef je niet te verwijderen, als je die maar niet kan herleiden tot een specifiek persoon.

Let wel, ik ben geen jurist. Heb deze kennis van de juristen hier op kantoor.
Factuur die niet op naam staat is toch geen factuur (maar een mooi bonnetje) ?

Overigens wel een goudmijn voor alle wiswassende autoverhuurders, kappers en aanverwanten in het lage deel der lade landen.

Geheel zal wel weer net zo goed doordacht zijn als de koekiemuur, die me ook nog steeds meer dwars zit dan me helpt (als je ze zelf blockt).

[ Voor 23% gewijzigd door gekkie op 04-05-2018 09:20 ]


  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
wackmaniac schreef op vrijdag 4 mei 2018 @ 09:13:
[...]


Anonimiseren. Jij hoeft voor de fiscus geen naam en toenaam te geven voor gebruikers. Facturen etc. hoef je niet te verwijderen, als je die maar niet kan herleiden tot een specifiek persoon.

Let wel, ik ben geen jurist. Heb deze kennis van de juristen hier op kantoor.
Hoe wil je dat doen?
Heel veel facturen zijn gelinkt aan een specifieke user zodat je terug kan halen voor wie het was.
Net als transactie-geschiedenis ed.

Allemaal spul dat je voor de belastingdienst 7 jaar moet bewaren.
Gevalletje van 2 wetten die elkaar botsen. Als ik me niet vergist er een uitzondering voor gegevens die je voor de overheid (wetgeving!) moet bewaren gedurende de bewaartijd.

Update:
Bewaartermijnen in andere wetten

Is er wetgeving van toepassing die bepaalde bewaartermijnen voorschrijft? Dan moet u deze termijnen hanteren. Bijvoorbeeld: de belastingwetgeving zegt dat u uw bepaalde gegevens 7 jaar moet bewaren.
bron : https://autoriteitpersoon...g/algemene-informatie-avg

[ Voor 19% gewijzigd door hackerhater op 04-05-2018 09:19 ]


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 18-12 12:14

TheNephilim

Wtfuzzle

hackerhater schreef op vrijdag 4 mei 2018 @ 09:16:
[...]


Hoe wil je dat doen?
Heel veel facturen zijn gelinkt aan een specifieke user zodat je terug kan halen voor wie het was.
Net als transactie-geschiedenis ed.

Allemaal spul dat je voor de belastingdienst 7 jaar moet bewaren.
Gevalletje van 2 wetten die elkaar botsen. Als ik me niet vergist er een uitzondering voor gegevens die je voor de overheid (wetgeving!) moet bewaren gedurende de bewaartijd.

Update:

[...]

bron : https://autoriteitpersoon...g/algemene-informatie-avg
Dat is een goeie! Dus stel een klant wil je dat je zijn/haar gegevens verwijderd, dan is anonimiseren genoeg, maar facturen mag je gewoon bewaren en hoef je niks mee te doen (ook niet te anonimiseren).

  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
Sterker nog: Zolang de doorlopend klant zijn (abbo's) mag je weigeren de contactgegevens te verwijderen omdat je die nodig hebt voor de dienst die ze afnemen.

Betreffende mijn klanten is het dus 7 jaar na de laatste betaling.
Wij hebben letterlijk alleen de contact-gegevens van onze klanten voor facturatie, meer niet.

*kijkt naar de klappers in de kast*
Ik kan niet wachten tot ik de eerste door de schredder mag halen.

[ Voor 14% gewijzigd door hackerhater op 04-05-2018 09:26 ]


  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 17-12 10:53
hackerhater schreef op vrijdag 4 mei 2018 @ 09:16:
[...]

Hoe wil je dat doen?
Heel veel facturen zijn gelinkt aan een specifieke user zodat je terug kan halen voor wie het was.
Net als transactie-geschiedenis ed.
Je kan deze gegevens herleidbaar maken tot een entiteit. Maar als iemand een Right of Erasure-aanvraag doet moet je de entiteit niet langer herleidbaar maken naar die persoon. En er zijn weinig situaties waarbij een bedrijf 7 jaar lang data naar een persoon moet kunnen herleiden. De data mag je bewaren, maar het mag niet herleidbaar zijn naar een persoon.

En als iemand een Right of Erasure-verzoek doet, dan kan deze persoon niet langer zijn of haar transactiegeschiedenis inzien. Dat is een logisch gevolg. Daarom is er ook de Right of Access; daarmee kan je alle informatie opvragen. Kan je dat mooi bewaren voor als de fiscus bij jou persoonlijk aan komt kloppen.

Edit: er is trouwens een verschil tussen klanten en klanten; deze wetgeving is gericht op particulieren. Niet op business to business.

[ Voor 6% gewijzigd door wackmaniac op 04-05-2018 09:28 ]

Read the code, write the code, be the code!


  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
Grofweg herhaal je wat ik net quote.
Als iemand om verwijdering vraagt, moet je die data verwijderen, behalve de onderdelen die je nodig hebt voor andere wetgeving.
Het kan dus heel goed dat je het user-record bewaard met een "verwijderd" flag erop.

Uiteraard moet het wel zo zijn dat behalve je eigen personeel er niemand meer aan kan.

[ Voor 14% gewijzigd door hackerhater op 04-05-2018 09:30 ]


  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 17-12 10:53
Ik ben blij dat jij het beter meent te weten dan de bedrijfsjuristen hier op kantoor.

Read the code, write the code, be the code!


  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
Weten die juristen ook dat je bepaalde data nodig hebt om de audit-trails en administratie intact te houden?
Daar gaat de discussie namelijk om.

Niet om alle rand-data die je inderdaad moet verwijderen/anomiseren. Puur de record waarmee je kan achterhalen wie iets gedaan heeft.

Het verschil tussen een bonnetje en een factuur is de informatie erop!
Nu zouden die facturen compleet los moeten staan van user records bij een goed systeem, maar dingen als audit-trails zijn dat niet.

Die AVG is btw een gortdroge wet waar nauwelijks doorheen te komen valt. Helaas moet ik het wel doen om aan de wetgeving te voldoen in een paar weken.

@alienfruit
Voor wat bewaren jullie dat user-record nog? Dat bepaald vooral of het genoeg is.

[ Voor 46% gewijzigd door hackerhater op 04-05-2018 09:37 ]


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19:44

alienfruit

the alien you never expected

Naam, adres, telefoon, email, initiele gps positie, voorkeuren etc.

Voor welke wet heb je een audit trail nodig dan? Belastingdienst niet bij mijn weten.

  • hackerhater
  • Registratie: April 2006
  • Laatst online: 21-12 09:52
alienfruit schreef op vrijdag 4 mei 2018 @ 09:40:
Naam, adres, telefoon, email, initiele gps positie, voorkeuren etc.

Voor welke wet heb je een audit trail nodig dan? Belastingdienst niet bij mijn weten.
De kans is groot dat je dat moet anomiseren ;)

De wet schrijft vaak geen audit-verplichting voor behalve voor financiele instellingen.
Echter als je er een hebt, moet ie kloppen ;)
In de praktijk heeft bijna elk dienst-verlenend bedrijf auditing in de software zitten, om discussies wie wat gedaan heeft te voorkomen.

[ Voor 13% gewijzigd door hackerhater op 04-05-2018 09:43 ]


  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 19:08
alienfruit schreef op vrijdag 4 mei 2018 @ 09:40:
Naam, adres, telefoon, email, initiele gps positie, voorkeuren etc.

Voor welke wet heb je een audit trail nodig dan? Belastingdienst niet bij mijn weten.
In de finance word je echt doodgegooid met auditing requirements.
Waar het kan bouw ik in die hoek mijn systemen ook lekker event sourced. :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 20:35

RayNbow

Kirika <3

Het zier ernaar uit dat ik misschien Agda moet gaan leren... :+
_⟨╯°□°⟩╯_ : {a b c : Set} → (a -> b -> c) -> b -> a -> c
(f ⟨╯°□°⟩╯ b) a = f a b

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20:24

Matis

Rubber Rocket

Douweegbertje schreef op vrijdag 4 mei 2018 @ 08:40:
Recent had ik een aantal sites onder de loep genomen en best geschrokken over hoe lek die eigenlijk zijn. Gebruik makend van headless technieken maar nog niet helemaal de implicaties begrijpen..

Uiteindelijk op medium een stukje geschreven; https://medium.com/@wiard...also-leaking-6b32b186adf4

Herkennen jullie dit ook? Zelf ervaring mee?
Gaaf artikel :Y graag zou ik ook leren hoe je lekken op het spoor kunt komen. Ik lees altijd exploit hier, XSS daar, maar ik weet nooit hoe ze zoiets op het spoor komen.

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


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Matis schreef op vrijdag 4 mei 2018 @ 12:04:
[...]

Gaaf artikel :Y graag zou ik ook leren hoe je lekken op het spoor kunt komen. Ik lees altijd exploit hier, XSS daar, maar ik weet nooit hoe ze zoiets op het spoor komen.
Gewoon uitproberen. En simpelweg de source bekijken / F12 drukken laat vaak al een hoop los zonder ook maar 1 regel code te typen of dingen te proberen....

Hoeder van het Noord-Meierijse dialect


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19:44

alienfruit

the alien you never expected

ABN vraagt nu 60 cent voor papieren rekeningen :( Schandalig

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 10-12 09:56

Douweegbertje

Wat kinderachtig.. godverdomme

Matis schreef op vrijdag 4 mei 2018 @ 12:04:
[...]

Gaaf artikel :Y graag zou ik ook leren hoe je lekken op het spoor kunt komen. Ik lees altijd exploit hier, XSS daar, maar ik weet nooit hoe ze zoiets op het spoor komen.
Ik zie mijzelf absoluut niet als expert. Ik ben van mening dat er eigenlijk 2 types zijn

1: echt gebaseerd op techniek; dus echt payloads maken, injecten, etc. Dit zijn de meest gevaarlijke aangezien dit de optie biedt tot de meeste schade (in de meeste gevallen)
2: informatie; iets wat eigenlijk iedereen kan. Dit is meer out of the box denken en doen. Het kan een kwestie zijn van een parameter veranderen of iets simpels injecten (xss kan heel simpel zijn bijv).

Die 2e vind ik persoonlijk relatief makkelijk. Je hoeft niet echte diepe kennis te hebben maar juist wel breed. Resultaat is vaak security issues die in potentie gevaarlijk kunnen zijn. Persoonlijk zie ik het zelf niet echt als een exploit maar als flaw die mogelijk met #1 kan worden uitgebuit.

Door gewoon oplettend te zijn in wat een site/applicatie doet, wat voor opties er zijn, wat de scope hoort te zijn, etc kan je 9/10x al iets vinden :)

Mijn ervaring is dat optie 1 ook ~10x zoveel tijd kost om hem te vinden & iets van een PoC te maken.

[ Voor 4% gewijzigd door Douweegbertje op 04-05-2018 12:52 ]


  • mduijvendijk
  • Registratie: Oktober 2001
  • Laatst online: 13-12 18:40

mduijvendijk

Flying Rukia ^_^

alienfruit schreef op vrijdag 4 mei 2018 @ 12:44:
ABN vraagt nu 60 cent voor papieren rekeningen :( Schandalig
Dat niet alleen, ook de kosten voor bankieren gaan 7 to 10% omhoog. :(

Sometimes human's are...

Pagina: 1 ... 83 ... 100 Laatste

Dit topic is gesloten.

Let op:
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.