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 ... 98 ... 100 Laatste
Acties:
  • 554.595 views

Acties:
  • 0 Henk 'm!

  • roeleboel
  • Registratie: Maart 2006
  • Niet online

roeleboel

en zijn beestenboel

en waar precies staat dan dit deel
www kán een subdomein zijn maar is meestal gewoon een hostnaam. Als het wel een subdomein is dan moet er ook een wildcard record in DNS zijn
want dat kan ik echt niet terugvinden...

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

roeleboel schreef op vrijdag 7 september 2018 @ 15:47:
[...]

want dat kan ik echt niet terugvinden...
Niet met zoveel woorden maar dat spreekt vanzelf. Je hebt een A-record nodig (eventueel in combinatie met een CNAME) of een wildcard om een naam te kunnen resolven. Je wilt geen A-record gebruiken want domain.tld is mooier? Dan wordt het dus een wildcard.

En heb je een domain www.domain.tld (www is dus een subdomain en geen A- of CNAME-record) dan moet www zelf een wildcard bevatten die naar de webserver wijst.

[ Voor 16% gewijzigd door downtime op 07-09-2018 16:06 ]


Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 15-09 18:58
Heb je ook nog een specifiek artikel ?
Een search op "www" levert exact nul hits op.

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

gekkie schreef op vrijdag 7 september 2018 @ 16:53:
[...]

Heb je ook nog een specifiek artikel ?
Een search op "www" levert exact nul hits op.
Ik denk dat je teveel focust op www. Het gebruik van www is een conventie en geen RFC AFAIK. Zoek dan liever op DNS wildcard.

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 15-09 18:58
downtime schreef op vrijdag 7 september 2018 @ 17:13:
[...]

Ik denk dat je teveel focust op www. Het gebruik van www is een conventie en geen RFC AFAIK. Zoek dan liever op DNS wildcard.
Ik mis nog steeds waar ik in de stukjes over wildcards kan afleiden dat dit een vereiste ergens is:
www kán een subdomein zijn maar is meestal gewoon een hostnaam. Als het wel een subdomein is dan moet er ook een wildcard record in DNS zijn.

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

gekkie schreef op vrijdag 7 september 2018 @ 17:36:
[...]

Ik mis nog steeds waar ik in de stukjes over wildcards kan afleiden dat dit een vereiste ergens is:
Het is alleen een vereiste als je wilt dat het iets nuttigs doet. Dus strikt genomen is het geen vereiste.

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Het is absoluut geen vereiste. Ik heb een domein waarbij ik alléén een subdomein in gebruik heb (fs.<domein>), er is géén www-record en ook geen @-record. Verwar @ (root) overigens niet met * (wildcard). ;)

Ik heb dat domein zodat ik split horizon DNS kan doen: ik heb binnen mijn thuisnetwerk een eigen DNS-server draaien die hetzelfde domein meteen routeert naar de juiste server, terwijl externe requests via een reverse proxy gaan. :)

[ Voor 5% gewijzigd door Alex) op 07-09-2018 20:08 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

diabolofan schreef op vrijdag 7 september 2018 @ 09:20:
[...]


Identatie leren? Daar heb je toch een IDE voor?
Ik heb genoeg mensen gezien die zo afhankelijk zijn van de IDE, dat ze niet meer zelf nadenken over wat er eigenlijk gebeurd of moet gebeuren. Het moment dat de IDE niet meer weet wat te doen, zijn ze hulpeloos en vallen terug op "geen idee" in plaats van zelf het probleem uitwerken.

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


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Koenvh schreef op donderdag 6 september 2018 @ 20:07:
@Lethalis Wil je ook PEP 8 feedback? Dan horen er namelijk twee witregels tussen de imports en de rest van de code te zetten, en ook twee witregels tussen de functies. Er hoort ook nog een witregel te zitten na main() (dus nog een lege regel 109) :)

Zelf zou ik die main() op het einde binnen een if __name__ == "__main__" zetten. Of misschien de hele main() functie weghalen.

Maar da's natuurlijk allemaal muggenzifterij :P

Meer inhoudelijk: Ik vraag me af of een aantal ConfigurationErrors te combineren zijn (MAILTO, MAILFROM en JOBNAME), maar daar weet ik zo 1-2-3 ook geen elegantere oplossing voor. Daarnaast zou ik de output van de subprocess naar een tijdelijk bestand schrijven (Python heeft hier tempfile voor) om geheugenproblemen te voorkomen.
Ik zou een losse functie kunnen maken die een environment variabele ophaalt en een ConfigurationError geeft als hij leeg is. Sowieso zou ik ook niet alleen op None maar ook op "leeg" moeten controleren.

En een tijdelijk bestand zou ik idd kunnen gebruiken.

[ Voor 3% gewijzigd door Lethalis op 08-09-2018 10:23 ]

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


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
Firesphere schreef op vrijdag 7 september 2018 @ 23:55:
[...]

Ik heb genoeg mensen gezien die zo afhankelijk zijn van de IDE, dat ze niet meer zelf nadenken over wat er eigenlijk gebeurd of moet gebeuren. Het moment dat de IDE niet meer weet wat te doen, zijn ze hulpeloos en vallen terug op "geen idee" in plaats van zelf het probleem uitwerken.
Dat is wel een wat vreemd argument. Natuurlijk helpt het om te snappen hoe iets werkt en waarom je iets doet, maar als je dat weet heeft het echt nul meerwaarde om handmatig methodes, variabelen of interfaces te gaan extraheren en dergelijke.

Blind vertrouwen op code inspections is nooit verstandig. Heb vrij vaak gezien dat juniors / stagiaires iets maar static maakten omdat code niet compileerde en de IDE dat als suggestie gaf.
Aan indentation gaat verder ook weinig mis met auto-formatting zolang het maar geen language construct is.

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


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

Je onderstreept bijna letterlijk mijn argument, terwijl je het probeert te ontkrachten. Thanks :)

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


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
Firesphere schreef op zondag 9 september 2018 @ 13:38:
Je onderstreept bijna letterlijk mijn argument, terwijl je het probeert te ontkrachten. Thanks :)
Nee hoor, jij haalt het aan in de context van indentation. Dat is een cosmetisch iets, behalve bij talen als Python, maar dan gaat de IDE ook niet magisch de indentation voor je 'goedzetten'.

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


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

Mugwump schreef op zondag 9 september 2018 @ 13:48:
[...]


Nee hoor, jij haalt het aan in de context van indentation. Dat is een cosmetisch iets, behalve bij talen als Python, maar dan gaat de IDE ook niet magisch de indentation voor je 'goedzetten'.
Upside-down-face-confused-smiley

Ehhhh, wut? Een genoemd voorbeeld maakt mijn hele argument een feit gebaseerd op dat voorbeeld? Sure thing honey. Goodnight.

*edit*
Mijn rijmkunst met betrekking tot de Nederlandse taal is vrij tanend. :/

[ Voor 8% gewijzigd door Firesphere op 09-09-2018 13:55 ]

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


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
Firesphere schreef op zondag 9 september 2018 @ 13:55:
[...]

Upside-down-face-confused-smiley

Ehhhh, wut? Een genoemd voorbeeld maakt mijn hele argument een feit gebaseerd op dat voorbeeld? Sure thing honey. Goodnight.

*edit*
Mijn rijmkunst met betrekking tot de Nederlandse taal is vrij tanend. :/
Je hele verhaal draait om de claim dat je "indentation moet leren" en waarom dat volgens anderen waaronder ik een vrij onzinnige claim is.

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


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

Mugwump schreef op zondag 9 september 2018 @ 13:59:
[...]


Je hele verhaal draait om de claim dat je "indentation moet leren" en waarom dat volgens anderen waaronder ik een vrij onzinnige claim is.
Nee, heb ik nooit gezegd. Het is een voorbeeld wat ik nam om een punt te maken dat volledig over je hoofd vliegt.
Succes en slaap lekker.

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


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

Mugwump schreef op zondag 9 september 2018 @ 13:59:
[...]


Je hele verhaal draait om de claim dat je "indentation moet leren" en waarom dat volgens anderen waaronder ik een vrij onzinnige claim is.
ho ho, jullie zitten zelf te discussiëren. :+
En ik als "andere" snap beide personen alleen zijn jullie beide te eigenwijs om elkaar te snappen lol.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:47

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik vond het prolog argument interessanter dan het indentationverhaal. Jammer dat ervoor is gekozen om daar dan op verder te gaan 8)7.

Kunnen we de conclusie maken dat verschillende talen niet hetzelfde zijn?

[ Voor 23% gewijzigd door .oisyn op 09-09-2018 15:32 ]

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


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
.oisyn schreef op zondag 9 september 2018 @ 14:07:
Ik vond het proloog argument interessanter dan het indentationverhaal. Jammer dat ervoor is gekozen om daar dan op verder te gaan 8)7.

Kunnen we de conclusie maken dat verschillende talen niet hetzelfde zijn?
Ja ik zal de loze discussie verder laten voor wat hij is. :P

Wat talen betreft zijn er een aantal verschillende "paradigma":
Wikipedia: Programming paradigm

Die paradigma beïnvloeden hoe je "over een probleem denkt".

Mensen die in de praktijk software ontwikkelden deden dat lange tijd hoofdzakelijk in imperatieve talen, waarin je feitelijk de computer vertelt wat hij moet doen. Tegenwoordig zitten ook in de "grote imperatieve talen" vaak wel de nodige concepten uit functioneel programmeren.

Logisch programmeren is volgens mij nog steeds hoofdzakelijk een academisch dingetje al wordt het ook gebruikt in bijvoorbeeld IBM's Watson en soortgelijke toepassingen.
Je definieert feiten en afleidingsregels en laat de computer vervolgens "logisch redeneren".

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


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 14:18
Mugwump schreef op zondag 9 september 2018 @ 14:40:
[...]
Mensen die in de praktijk software ontwikkelden deden dat lange tijd hoofdzakelijk in imperatieve talen, waarin je feitelijk de computer vertelt wat hij moet doen. Tegenwoordig zitten ook in de "grote imperatieve talen" vaak wel de nodige concepten uit functioneel programmeren.
Ook voor de imperatieve talen wil men tegenwoordig meer op een hoger nivo doen. Dus streams ipv loopjes (in java).
Maakt het beter leesbaar, maar redundancy ligt op de loer. B.v. lijsten die in verschillende methodes op dezelfde manier gefilterd worden. Dus of dat positief is, hangt sterk van de programmeur af; Weet die wel goed wat er onder water gebeurd en wat voor impact dat heeft?

Aan de ene kant zie je dat die manier aansluit op 'low code', maar er toch een weerstand blijft om het echt 'low code' te maken.

let the past be the past.


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
SPee schreef op zondag 9 september 2018 @ 17:42:
[...]


Ook voor de imperatieve talen wil men tegenwoordig meer op een hoger nivo doen. Dus streams ipv loopjes (in java).
Maakt het beter leesbaar, maar redundancy ligt op de loer. B.v. lijsten die in verschillende methodes op dezelfde manier gefilterd worden. Dus of dat positief is, hangt sterk van de programmeur af; Weet die wel goed wat er onder water gebeurd en wat voor impact dat heeft?
Ik zou een functionele syntax niet direct "op een hoger niveau" willen noemen. Het is vooral een andere aanpak. Een goede functionele aanpak maakt de boel voorspelbaarder doordat er geen mutable state is, hoewel dat in Java gewoon mogelijk blijft.
Aan de ene kant zie je dat die manier aansluit op 'low code', maar er toch een weerstand blijft om het echt 'low code' te maken.
Wat heeft low code er precies mee te maken? In mijn ogen zijn dat meer platforms waarmee je applicaties meer genereert dan programmeert op basis van modellen of grafische interfaces. Of bedoel je dat dit pogingen zijn om een taal minder verbose te maken?

Streams zitten ook vooral in Java omdat men goed gekeken de opkomst van Scala zag in mijn ogen. :P
C# heeft al meer dan tien jaar LINQ.

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


Acties:
  • 0 Henk 'm!

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 17:33

DevWouter

Creator of Todo2d.com

downtime schreef op vrijdag 7 september 2018 @ 12:57:
[...]

www kán een subdomein zijn maar is meestal gewoon een hostnaam. Als het wel een subdomein is dan moet er ook een wildcard record in DNS zijn. Als dat wildcard record naar hetzelfde IP verwijst als het www-record dan zal www.domein.tld naar dezelfde site wijzen als domein.tld.
Uhm... Dat zijn twee compleet verschillende concepten dus dat "kán" inderdaad gezien ze verder niks met elkaar te maken hebben.

"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


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 09:06

Firesphere

Yoshis before Hoshis

.oisyn schreef op zondag 9 september 2018 @ 14:07:
Ik vond het prolog argument interessanter dan het indentationverhaal. Jammer dat ervoor is gekozen om daar dan op verder te gaan 8)7.

Kunnen we de conclusie maken dat verschillende talen niet hetzelfde zijn?
Absoluut. Ik nam indentatie als voorbeeld, niet als feit :)

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


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Mugwump schreef op zondag 9 september 2018 @ 18:47:
Streams zitten ook vooral in Java omdat men goed gekeken de opkomst van Scala zag in mijn ogen. :P
C# heeft al meer dan tien jaar LINQ.
Even voor iemand die LINQ zelf niet echt kent, maar FP wel: mogen LINQ-expressies gewoon samengevat worden als functionele expressies, toegepast op collections?
Mugwump schreef op zondag 9 september 2018 @ 18:47:
Ik zou een functionele syntax niet direct "op een hoger niveau" willen noemen. Het is vooral een andere aanpak. Een goede functionele aanpak maakt de boel voorspelbaarder doordat er geen mutable state is, hoewel dat in Java gewoon mogelijk blijft.
Mutable state 'verstoppen' is een vorm van abstractie, en conceptueel is abstractie wat een aanpak high-level maakt. Net zoals dat een while-loop een abstractie is van (conditionele) GOTO-statements. En net zoals dat je in een OO-aanpak methodes gebruikt als abstractie voor een pointer naar de data die je object voorstelt als argument doorgeven aan functies, en inheritance als abstractie voor het dynamisch opzoeken van de juiste functie.

Dus ik zou FP wel een hoger niveau noemen dan imperatief programmeren. Of FP nou een hoger niveau is dan OO is discutabel, het zijn verschillende abstracties. Al heb ik als ik OO zit te doen meer behoefte aan FP-constructies dan aan OO-constructies als ik FP zit te doen, maar dat kan ook aan de persoonlijke voorkeuren van deze theoreet liggen. :P Al ben ik schijnbaar niet de enige, gezien LINQ en lambda's in C#/Java.

Je wil niet handmatig GOTO-statements en dynamic dispatch aanroepen. En dus ook niet handmatig state beheren. Althans, dat is het idee als je deze vormen van abstracties gebruikt, en daarmee het idee van high-level programmeren.

[ Voor 8% gewijzigd door bwerg op 10-09-2018 11:34 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

bwerg schreef op maandag 10 september 2018 @ 10:59:
[...]

Even voor iemand die LINQ zelf niet echt kent, maar FP wel: mogen LINQ-expressies gewoon samengevat worden als functionele expressies, toegepast op collections?
Ja. En IEnumerable<T> (waar heel LINQ om draait, samen met IQueryable<T>) is een monad, SelectMany is de bind. Veel functioneler wordt het niet.

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


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 17:28

RayNbow

Kirika <3

bwerg schreef op maandag 10 september 2018 @ 10:59:
[...]

Even voor iemand die LINQ zelf niet echt kent, maar FP wel: mogen LINQ-expressies gewoon samengevat worden als functionele expressies, toegepast op collections?
Het hoeven geen collecties te zijn. De LINQ syntax wordt door de compiler blindweg herschreven naar methode-aanroepen (Select, SelectMany, Where, etc.) en daarna pas gecontroleerd of wat er staat zinnige code is. Het maakt de compiler niet uit of het een collectie is of dat het om iets als een vectorruimte gaat.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • PWSteal
  • Registratie: December 2013
  • Laatst online: 13:15
RayNbow schreef op maandag 10 september 2018 @ 13:24:
[...]


Het hoeven geen collecties te zijn. De LINQ syntax wordt door de compiler blindweg herschreven naar methode-aanroepen (Select, SelectMany, Where, etc.) en daarna pas gecontroleerd of wat er staat zinnige code is. Het maakt de compiler niet uit of het een collectie is of dat het om iets als een vectorruimte gaat.
Misschien dat het aan mij ligt, maar ik heb nog nooit een LINQ-expressie gezien die niet op een IEnumerable (of derivaat) van toepassing is.

Acties:
  • +2 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Edwin__ schreef op maandag 10 september 2018 @ 21:13:
[...]


Misschien dat het aan mij ligt, maar ik heb nog nooit een LINQ-expressie gezien die niet op een IEnumerable (of derivaat) van toepassing is.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Program
{
    static void Main(string[] args)
    {
        var good = from x in 50.Divide(2)
                   from y in x.Divide(3)
                   select y;

        var bad = from x in 50.Divide(2)
                  from y in x.Divide(0)
                  from z in y.Divide(2)
                  select z;

        Console.WriteLine($"Good = {good}");
        Console.WriteLine($"Bad = {bad}");
    }
}

struct Maybe<T>
{
    public static Maybe<T> Nothing = new Maybe<T>();

    public T Value { get; }
    public bool HasValue { get; }

    public Maybe(T value)
    {
        Value = value;
        HasValue = true;
    }

    public override string ToString()
    {
        return HasValue ? Value.ToString() : "<nothing>";
    }
}

static class MaybeExtensions
{
    public static Maybe<T> ToMaybe<T>(this T value) => new Maybe<T>(value);

    private static Maybe<U> Bind<T, U>(this Maybe<T> value, Func<T, Maybe<U>> func)
    {
        return value.HasValue ? func(value.Value) : Maybe<U>.Nothing;
    }

    public static Maybe<V> SelectMany<T, U, V>(this Maybe<T> value,
        Func<T, Maybe<U>> collectionSelector, Func<T, U, V> resultSelector)
    {
        return value.Bind(x => collectionSelector(x).Bind(y => resultSelector(x, y).ToMaybe()));
    }

    public static Maybe<int> Divide(this int value, int divisor)
    {
        return divisor == 0 ? Maybe<int>.Nothing : (value / divisor).ToMaybe();
    }
}

[ Voor 14% gewijzigd door kenneth op 10-09-2018 22:22 ]

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


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:59
Maakt iets een LINQ expressie omdat je from gebruikt ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ik interpreteer een LINQ expression als een query expression. Wat wordt er anders mee bedoeld dan :?

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


Acties:
  • +1 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 17:28

RayNbow

Kirika <3

kenneth schreef op maandag 10 september 2018 @ 22:20:
[...]

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Program
{
    static void Main(string[] args)
    {
        var good = from x in 50.Divide(2)
                   from y in x.Divide(3)
                   select y;

        var bad = from x in 50.Divide(2)
                  from y in x.Divide(0)
                  from z in y.Divide(2)
                  select z;

        Console.WriteLine($"Good = {good}");
        Console.WriteLine($"Bad = {bad}");
    }
}

struct Maybe<T>
{
    public static Maybe<T> Nothing = new Maybe<T>();

    public T Value { get; }
    public bool HasValue { get; }

    public Maybe(T value)
    {
        Value = value;
        HasValue = true;
    }

    public override string ToString()
    {
        return HasValue ? Value.ToString() : "<nothing>";
    }
}

static class MaybeExtensions
{
    public static Maybe<T> ToMaybe<T>(this T value) => new Maybe<T>(value);

    private static Maybe<U> Bind<T, U>(this Maybe<T> value, Func<T, Maybe<U>> func)
    {
        return value.HasValue ? func(value.Value) : Maybe<U>.Nothing;
    }

    public static Maybe<V> SelectMany<T, U, V>(this Maybe<T> value,
        Func<T, Maybe<U>> collectionSelector, Func<T, U, V> resultSelector)
    {
        return value.Bind(x => collectionSelector(x).Bind(y => resultSelector(x, y).ToMaybe()));
    }

    public static Maybe<int> Divide(this int value, int divisor)
    {
        return divisor == 0 ? Maybe<int>.Nothing : (value / divisor).ToMaybe();
    }
}
...maar die Maybe<T> zou je evt. een IEnumerable<T> van kunnen maken. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • +2 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Is een Maybe<T> überhaupt iets anders dan een IEnumerable<T> met [0,1] elementen? :)

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


Acties:
  • +1 Henk 'm!

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 15:36
InZane schreef op dinsdag 4 september 2018 @ 14:41:
[...]


Het werkt hier in z'n geheel niet. Ik krijg alleen maar de pagina met het robotje met daaronder: 'Sorry! Our services aren't available right now'.

Mijn privé account heeft verder ook geen problemen.
Buck Hodges heeft een blog geschreven over het hoe, wat en waarom rondom de VSTS/Azure DevOps downtime van afgelopen week: MSDN: Postmortem: VSTS 4 September 2018 – Service Blog – Visual S...

Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Harrie_ schreef op vrijdag 7 september 2018 @ 12:12:
Even een ordinaire crosspost naar het grote enquete-topic.

Wij hebben hier een stagiair die een onderzoek doet specifiek gericht op devven dus dit lijkt me de uitgelezen plek om buiten het enquete-topic de juiste doelgroep aan te spreken >:) :>
Ik wil m'n eigen post nog een keer onder de aandacht brengen; direct na het plaatsen van deze post volgde de www-post van @DevWouter en de daaropvolgende discussie en ik heb het idee dat niemand daarom mijn post heeft gezien :-(

Hoeder van het Noord-Meierijse dialect


Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:47

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dus, welk toetsenbord gebruiken jullie nu? :+

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:
  • +1 Henk 'm!

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 17:33

DevWouter

Creator of Todo2d.com

.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Ducky 9008S2 met bruine switches. Op die manier weet het halve pand wanneer ik aan het typen ben >:)

@Harrie_ Geen zorgen, ik heb die enquete ingevuld en daarmee zou hij/zij/het ook het definitieve antwoord moeten hebben :+

"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


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Nu online
.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Afbeeldingslocatie: https://www.howtogeek.com/wp-content/uploads/2016/01/ximg_56a6c8325a885.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.BV_Bo8dVaq.png

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik heb drie Ducky's, twee met browns en een met reds.

[ Voor 200% gewijzigd door Olaf van der Spek op 11-09-2018 13:03 ]


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
bwerg schreef op maandag 10 september 2018 @ 10:59:
[...]

Even voor iemand die LINQ zelf niet echt kent, maar FP wel: mogen LINQ-expressies gewoon samengevat worden als functionele expressies, toegepast op collections?


[...]

Mutable state 'verstoppen' is een vorm van abstractie, en conceptueel is abstractie wat een aanpak high-level maakt. Net zoals dat een while-loop een abstractie is van (conditionele) GOTO-statements. En net zoals dat je in een OO-aanpak methodes gebruikt als abstractie voor een pointer naar de data die je object voorstelt als argument doorgeven aan functies, en inheritance als abstractie voor het dynamisch opzoeken van de juiste functie.
Je verstopt mutable state niet, het is er gewoon niet. Dat is een keuze die bepaalde voordelen heeft, maar ook andere zaken veel lastiger maakt.
Dus ik zou FP wel een hoger niveau noemen dan imperatief programmeren. Of FP nou een hoger niveau is dan OO is discutabel, het zijn verschillende abstracties.
OO valt gewoon onder het imperatieve paradigma, dus het is nogal vreemd om te stellen dat er een ordening imperatief > FP > OO zou bestaan. :P
Al heb ik als ik OO zit te doen meer behoefte aan FP-constructies dan aan OO-constructies als ik FP zit te doen, maar dat kan ook aan de persoonlijke voorkeuren van deze theoreet liggen. :P [small]Al ben ik schijnbaar niet de enige, gezien LINQ en lambda's in C#/Java.

Je wil niet handmatig GOTO-statements en dynamic dispatch aanroepen. En dus ook niet handmatig state beheren. Althans, dat is het idee als je deze vormen van abstracties gebruikt, en daarmee het idee van high-level programmeren.
Dat wil je vaak wel degelijk. "No side-effects" is gewoon een nadeel als je bijvoorbeeld te maken krijgt met I/O of persistence. Er zijn wel manieren om in puur functionele talen om te gaan met IO, maar dat wordt toch al vrij snel vrij complex. Wat dat betreft zijn imperatieve talen ook juist een vrij goede fit met de manier waarop mensen redeneren, terwijl (puur) functionele talen toch vaak wel lastig gevonden worden. Heel vaak wil je als applicatie(ontwikkelaar) ook wel degelijk state muteren op een harde schijf of in een database.

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


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
De cheapste Microsoft keyboards die ik kan vinden :*)

Acties:
  • 0 Henk 'm!

  • Antrax
  • Registratie: April 2012
  • Laatst online: 16:15
Ik heb dus letterlijk een collega gehad die programmeerde met het onscreen toetsenbord via zijn touch screen. :P

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


Acties:
  • 0 Henk 'm!

  • hackerhater
  • Registratie: April 2006
  • Laatst online: 11:02
PrisonerOfPain schreef op dinsdag 11 september 2018 @ 13:18:
[...]


De cheapste Microsoft keyboards die ik kan vinden :*)
RSI in 3,2,1 8)7

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Douweegbertje schreef op vrijdag 7 september 2018 @ 09:50:
[...]
Dit is ook exact mijn mening.
Zodra mn python script > 50 lines heeft ga ik namelijk huilen van ellende.

Hoewel ik het zelf erg tof vind is er nog een ander negatief punt;
python2.7 vs 3 en dan nog die dependency hell. De 1 required v1.2 en de ander 1.4 en dan sloop je de rest en dan zet je pip erop en dan valt heel python uit elkaar. :+

Zeker op een system waar je toch al snel diverse python-based dingen gebruikt kan je best tegen dit soort grappen aanlopen.
Ik gebruik voor serieuze softwareprojecten voornamelijk C# (op mijn werk en voor Windows), maar voor het snel even schrijven van tooltjes of scripts is Python gewoon koning. Vaak heb ik het in Python al af, terwijl ik met C# nog bezig ben de classes te ontwerpen :P

Maar dat komt eerlijk gezegd ook grotendeels door OOP wat toch een bepaalde mentale overhead met zich meebrengt.

Static typing vind ik voor de rest juist wel fijn.

Daarom is een taal als Kotlin ook ideaal, omdat deze wel statically typed is, maar wel toestaat dat je met alleen functies werkt (die je mooi kunt groeperen in packages). Natuurlijk worden dat under the hood weer static classes met static methods, maar terwijl je aan het programmeren bent, is het lekker clean.

Nadeel is alleen dat ik bij Kotlin best veel moet doen voordat mijn tooltje het op een random Linux server doet, ten opzichte van even snel een Python script er naartoe kopiëren en draaien maar. Ook kan ik voor Python gewoon even snel VS Code o.i.d. opstarten, snel iets maken en gaan. Ik hoef niet een zware IDE op te starten op mijn gemiddeld 6 jaar oude computers :P

Golang ben ik ook wel fan van, maar die mist weer een uitgebreide SDK. Heel leerzaam hoor dat ik zelf multipart MIME messages in elkaar moet flansen, maar ik verstuur al ruim 15 jaar mailtjes met .NET zonder dat ik mij daar ooit druk om heb gemaakt.

Zo heeft elke taal wel weer iets :+

Thuis eindig ik vaak bij Python, omdat ik met minimale inspanning even snel iets kan bouwen. En ik daar - al ruim een jaar - alleen maar Linux draai. Linux op de desktop, op mijn laptop, en op de servers. Python voelt zich daar nogal thuis.

[ Voor 4% gewijzigd door Lethalis op 11-09-2018 14:06 ]

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


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Mugwump schreef op dinsdag 11 september 2018 @ 13:18:
Je verstopt mutable state niet, het is er gewoon niet. Dat is een keuze die bepaalde voordelen heeft, maar ook andere zaken veel lastiger maakt.
Uitendelijk compileert het naar een set instructies op variabelen/registers. Je programma representeert een stateful berekening, maar niet expiciet, dat bedoel ik met 'verstoppen'. En state is er wel, aangetoond door middel van back doors. :+
Dat wil je vaak wel degelijk. "No side-effects" is gewoon een nadeel als je bijvoorbeeld te maken krijgt met I/O of persistence.
Daarom ook "als je deze vormen van abstracties gebruikt". Als je vooral IO doet wil je misschien helemaal geen FP, maar wil je lekker scripten in bash. Als je een smart-card met nul komma niks aan rekenkracht programmeert, of een cryptografische library, wil je misschien ook GOTO-statements en directe toegang tot registers in plaats van loops en functiecalls. Geen enkele abstractie is bruikbaar als je programma zich nou juist richt op zaken die worden weggeabstraheerd.
Er zijn wel manieren om in puur functionele talen om te gaan met IO, maar dat wordt toch al vrij snel vrij complex.
Mwah, de do-syntax in haskell lijkt héél erg sterk op de syntax van een imperatieve taal, met als grootste verschil dat er geen verschil meer is tussen statements en expressies. Als je een programmeur zonder haskell-voorkennis aan het werk zet gaat 'ie gewoon "imperatief" programmeren. Ik zie hierin echt geen verschil in complexiteit.

Een programmaatje maken dat in meerdere threads sockets opent en synchroniseert lukte me in haskell in ieder geval beter dan in python. Dat is meer een kwestie van gewenning en de juiste libraries dan inherente complexiteit.

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 15:01

Koetjeboe

Boe, zegt de koe

Eerst downtime bij Slack, en nu bij Github...mijn wereld stort vandaag in elkaar :'(

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Koetjeboe schreef op dinsdag 11 september 2018 @ 14:14:
Eerst downtime bij Slack, en nu bij Github...mijn wereld stort vandaag in elkaar :'(
Zie daar de reden waarom we geen Github gebruiken op mijn werk, maar zelf een git server hosten.

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


Acties:
  • +4 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
Koetjeboe schreef op dinsdag 11 september 2018 @ 14:14:
Eerst downtime bij Slack, en nu bij Github...mijn wereld stort vandaag in elkaar :'(
Ik had niet verwacht dat de overname door Microsoft zo snel effect zou sorteren. :P

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


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Mugwump schreef op dinsdag 11 september 2018 @ 14:17:
[...]


Ik had niet verwacht dat de overname door Microsoft zo snel effect zou sorteren. :P
_O-

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


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Momenteel dat van mijn 2012 Macbook Air, boven heb ik deze unit staan. :)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Die wil ik ook aan gaan schaffen, met deze muis. Bij Nederlandse webshops zag ik 'm alleen nog zonder fingerprint reader. Hoe bevalt dit keyboard? (en hoe fijn is de fingerprint voor het ontgrendelen?)

Acties:
  • +1 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
orf schreef op dinsdag 11 september 2018 @ 15:26:
[...]


Die wil ik ook aan gaan schaffen, met deze muis. Bij Nederlandse webshops zag ik 'm alleen nog zonder fingerprint reader.
Ik heb mijn toetsenbord door een vriend laten kopen toen hij toch in de VS was :)
Hoe bevalt dit keyboard? (en hoe fijn is de fingerprint voor het ontgrendelen?)
Ik ben er blij mee, het toetsenbord typt lekker en de functietoetsen zijn handig in gebruik.

De fingerprintreader werkt prima, hij leest m'n vinger snel en ontgrendelen werkt ook goed. Je moet de knop iets langer ingedrukt houden dan je bij een normale toets zou doen, dat was even wennen.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 16:54
Enig idee hoe goed die microsoft dingen werken op Ubuntu? Het schijnen geweldige producten te zijn, maar de prijs is dermate hoog dat ik het niet even ga proberen en er genoegen mee neem als de extra's ff niet (lekker) werken.

Tjolk is lekker. overal en altijd.


Acties:
  • +2 Henk 'm!

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 17:33

DevWouter

Creator of Todo2d.com

Lethalis schreef op dinsdag 11 september 2018 @ 13:58:
[...]

Ik gebruik voor serieuze softwareprojecten voornamelijk C# (op mijn werk en voor Windows), maar voor het snel even schrijven van tooltjes of scripts is Python gewoon koning. Vaak heb ik het in Python al af, terwijl ik met C# nog bezig ben de classes te ontwerpen :P
Dan raad ik je LinqPad aan. Je wilt niet weten hoeveel scripts ik heb waar ik on the fly een dynamisch class creëer.

C#:
1
2
3
4
5
6
7
8
9
10
new[] {
    new { x =12, y = 34 },
    new { x =56, y = 78 },
}
.Select(src => new { 
    x = src.x, 
    y = src.y, 
    z = src.x + src.y
})
.Where(src => src.z > 50)


Of nog fancier...
Afbeeldingslocatie: https://www.linqpad.net/images/thebigdump.png

"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


Acties:
  • +1 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Tjolk schreef op dinsdag 11 september 2018 @ 15:33:
Enig idee hoe goed die microsoft dingen werken op Ubuntu? Het schijnen geweldige producten te zijn, maar de prijs is dermate hoog dat ik het niet even ga proberen en er genoegen mee neem als de extra's ff niet (lekker) werken.
Uiteindelijk is een toetsenbord gewoon een toetsenbord, en een muis gewoon een muis. Het apparaat stuurt commando's over de USB-interface of via Bluetooth naar de pc.

De basisfunctionaliteit zal allemaal wel werken op Linux, maar hoe het zit met media keys of de fingerprintreader durf ik je niet te zeggen. :)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • bauke1994
  • Registratie: Maart 2011
  • Laatst online: 16:56
Alex) schreef op dinsdag 11 september 2018 @ 15:38:
[...]

Uiteindelijk is een toetsenbord gewoon een toetsenbord, en een muis gewoon een muis. Het apparaat stuurt commando's over de USB-interface of via Bluetooth naar de pc.

De basisfunctionaliteit zal allemaal wel werken op Linux, maar hoe het zit met media keys of de fingerprintreader durf ik je niet te zeggen. :)
De media keys zullen ook wel out of the box werken(mijn logitech k800 deed het in ieder geval prima), en anders zijn ze waarschijnlijk wel te configureren.
Een fingerprintreader op Ubuntu aan de praat krijgen is wel een vak apart.

Acties:
  • 0 Henk 'm!

  • Kobus Post
  • Registratie: September 2010
  • Laatst online: 05-09 17:13
Heb thuis zelf de Das Keyboard Prime 13 https://www.daskeyboard.com/p/prime13-mechanical-keyboard/
Tikt heerlijk weg, een verademing vergeleken met het standaard HP toetsenbord dat er eerst lag. En makkelijker in het donker :)

No trees were harmed in the creation of this message, but several thousand electrons were mildly inconvenienced.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kobus Post schreef op dinsdag 11 september 2018 @ 18:10:
Heb thuis zelf de Das Keyboard Prime 13 https://www.daskeyboard.com/p/prime13-mechanical-keyboard/
Tikt heerlijk weg, een verademing vergeleken met het standaard HP toetsenbord dat er eerst lag. En makkelijker in het donker :)
Die heb ik ook. Eens in de zoveel keer staan de LEDs aan bij het booten van m'n pc en registreert 'ie alle toetsaanslagen dubbel. Maar een reboot lost dat gelukkig weer op.

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


  • Lethalis
  • Registratie: April 2002
  • Niet online
DevWouter schreef op dinsdag 11 september 2018 @ 15:36:
[...]
Dan raad ik je LinqPad aan. Je wilt niet weten hoeveel scripts ik heb waar ik on the fly een dynamisch class creëer.
Mijn grootste probleem is eigenlijk een mismatch tussen wat ik probeer te doen, en waar ik de meeste ervaring in heb.

De meeste ervaring heb ik met het bouwen van ASP.NET web applicaties en Windows Forms. Dit met Visual Studio en op Windows.

Waar mijn passie ligt, is het ontwikkelen van software voor Linux en ook op Linux. Vaak zit ik daarbij in eerste instantie ook nog op een niveau iets dichter bij het systeem zelf.

Zo heb ik nu - voor mijn gevoel vrij snel en eenvoudig - met Python een Cron job wrapper gebouwd. Deze praatte eerst met SSMTP, totdat iemand mij er op wees dat dit project inmiddels unmaintained is. Okee, dus daar ook een Python scriptje voor geschreven die SSMTP emuleert.

Wil ik dit zelfde met C# bouwen, dan loop ik al gauw er tegenaan dat een MailMessage class niet vanuit een MIME text gevuld kan worden. Hier kan ik omheen werken, door mijn job wrapper en mail script samen te voegen. Of nog erger: de MimeKit library gebruiken om de MIME te parsen en zelf de MailMessage class te vullen.

Vervolgens wil ik echter dat een default mail configuratie bestand met beperkte rechten wordt opgeslagen. Bij C# kan ik dan een Mono library erbij gaan plakken, terwijl een taal als Python (en ook Java en Golang) dit soort zaken gewoon "aan boord" hebben.

Dus ik loop continu tegen allerlei dingetjes aan, die mijn gebruik van C# op Linux frustreren. Het is niet onmogelijk, zeker met allerlei extra libraries en C wrappers kom je er wel, maar het voelt niet natuurlijk en omslachtig.

Vervolgens begrijp ik de kritiek op Python natuurlijk wel. Ik ben ook een paar keer ertegen aan gelopen dat iets het niet deed, zonder dat ik wist waarom. En bijna altijd kwam dit door een verkeerd data type. Ook staar ik soms naar functies in de SDK, omdat ik niet weet wat ik er precies allemaal aan door mag geven (gelukkig is stackoverflow er).

Allemaal issues die je bij een strongly typed taal gewoon niet hebt. Als ik naar een SDK van C#, Java, Golang, enzovoorts kijk, dan documenteert deze praktisch zichzelf. Je weet altijd wat waar in mag en waarom.

Wil ik echter Python evenaren qua gemak op Linux, dan is dat best lastig... Golang komt er eigenlijk nog het dichtste bij in de buurt, maar heeft een relatief beperkte set aan API's en libraries. Het is zo ongeveer het omgekeerde van C#. Alle systeemfuncties zijn er, maar zodra je higher level dingen wil doen dan ontbreken die vaak (een HTML mail versturen bijvoorbeeld, het is mij gelukt, maar was relatief veel werk).

Tsja, en dan is er Java. Dit heeft letterlijk alles, maar als je de productiviteit van C#, Python en Golang gewend bent... dan voelt het erg spartaans aan. Het "even snel iets bouwen" wil dan niet meer echt.

Ondanks dat ik jaren Java gedaan heb :P Ik kan sneller iets in Python in elkaar flansen, terwijl ik die taal eigenlijk nooit echt geleerd heb... (Java daarentegen wel, heb er zelfs diverse cursussen voor gedaan)

Dus dan denk je, okee, ik ga de middle ground zoeken en een taal als Kotlin gebruiken. Hartstikke mooi, maar dan zit je ook al gauw vast aan IntelliJ IDEA. Wat verder een prima IDE is.

Alleen heb ik er een hobby van gemaakt om mijn oude hardware te gebruiken. Juist een beetje als protest tegen mijn dagelijkse werk, waar ik een dikke core i7 nodig heb om nog iets voor elkaar te krijgen (ik werk aan een groot Windows Forms project).

Het voelt juist gaaf om een keer niet met bloated zooi te werken. Bij Golang en Python voelt dat goed. Ik kan op een oude Celeron op Linux met een passmark score van amper 2000 punten gewoon zeggen dat het allemaal erg snel werkt :) Dat vind ik gewoon leuk.

Zodra ik dan IntelliJ op ga starten, begin ik mij alweer te irriteren... doe mij maar gewoon VS Code. Iets dat snel opstart op mijn crappy hardware en waar ik meteen mee aan de slag kan.

...

Anyways, ik maak het mezelf ontzettend moeilijk soms :+

Wel zie ik dat het afgelopen jaar de libraries voor Golang beter zijn geworden. Zo kan het inmiddels STARTTLS als je iets wil mailen en werkt het tenminste direct met Office365. Ook wordt er serieus gewerkt aan verbeterde error handling.

Natuurlijk timmert Microsoft rustig door aan .NET Core 3 en zullen er echt wel betere libraries komen.

Maar het is 2018 en ik wacht de hele tijd op dingen die "er aan komen".

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


  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 17:33

DevWouter

Creator of Todo2d.com

@Lethalis je beschrijft nu een heleboel onderwerpen welke ik niet in je eerdere bericht terug las, daar ging het voornamelijk over dat het in C# lastig te scripten is en dat je veel tijd aan classes kwijt ben. Nu lees ik een heleboel andere redenen zoals ondersteuning op Linux en de snelheid van een IDE. Dat verandert de zaak.

Ik adviseer altijd om de makkelijkste route te nemen en gezien jouw laatste reactie denk ik wel dat je kan gokken wat mijn advies aan jou zal zijn ;)

"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


Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
DevWouter schreef op woensdag 12 september 2018 @ 10:05:
Ik adviseer altijd om de makkelijkste route te nemen en gezien jouw laatste reactie denk ik wel dat je kan gokken wat mijn advies aan jou zal zijn ;)
Dat is momenteel simpelweg Python blijven gebruiken :P Aan de andere kant hoef ik bij C# nauwelijks na te denken...

Maar ik ben eigenwijs en wil altijd even zien hoe ver ik kom, dus om het MIME probleem in .NET Core te omzeilen de JobWrapper en Mailer gecombineerd in 1 programma. Het valt uiteindelijk ook wel mee.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Xml.Serialization;

namespace Mailer
{
    public class MailConfiguration
    {
        public string Server { get; set; } = "127.0.0.1";
        public int Port { get; set; } = 25;
        public bool UseSSL { get; set; }
        public bool UseCredentials { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }

        public static MailConfiguration Initialize()
        {
            var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            var configFile = Path.Combine(homeDir, ".Mailer.Config");

            if (File.Exists(configFile))
            {
                var xml = File.ReadAllText(configFile);
                return MailConfiguration.CreateFromXml(xml);
            }
            else
            {
                var defaultConfiguration = new MailConfiguration();
                var xml = defaultConfiguration.ToXml();
                File.WriteAllText(configFile, xml);
                return defaultConfiguration;
            }
        }

        public static MailConfiguration CreateFromXml(string xml)
        {
            var serializer = new XmlSerializer(typeof(MailConfiguration));
            using (var reader = new StringReader(xml))
            {
                return (MailConfiguration)serializer.Deserialize(reader);
            }
        }

        public string ToXml()
        {
            var serializer = new XmlSerializer(typeof(MailConfiguration));
            using (var writer = new StringWriter())
            {
                serializer.Serialize(writer, this);
                return writer.ToString();
            }
        }

        public void SendMail(string destination, MailMessage message)
        {
            var client = new SmtpClient();
            client.Host = this.Server;
            client.Port = this.Port;
            if (this.UseCredentials)
            {
                client.Credentials = new NetworkCredential(this.Username, this.Password);
            }
            client.EnableSsl = this.UseSSL;
            client.Send(message);
        }
    }

    public class JobDetails
    {
        public string MailTo { get; set; }
        public string MailFrom { get; set; }
        public string JobName { get; set; }
        public string FileName { get; set; }
        public string Arguments { get; set; }

        public static JobDetails Initialize(string[] args)
        {
            var result = new JobDetails();

            result.MailTo = Environment.GetEnvironmentVariable("MAILTO");
            result.MailFrom = Environment.GetEnvironmentVariable("MAILFROM");
            result.JobName = Environment.GetEnvironmentVariable("JOBNAME");

            if (string.IsNullOrEmpty(result.MailTo))
                throw new ApplicationException("MAILTO environment variable is not set.");

            if (string.IsNullOrEmpty(result.MailFrom))
                throw new ApplicationException("MAILFROM environment variable is not set.");

            if (string.IsNullOrEmpty(result.JobName))
                throw new ApplicationException("JOBNAME environment variable is not set.");

            if (args.Length == 0)
                throw new ApplicationException("Please specify a command.");

            result.FileName = args.First();
            if (args.Length > 1) result.Arguments = args.Skip(1).Aggregate((i, j) => $"{i} {j}");

            return result;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // In powershell testen met:
                //
                // $env:MAILTO="test@test.nl"
                // $env:MAILFROM="test@test.nl"
                // $env:JOBNAME="test"
                var jobDetails = JobDetails.Initialize(args);

                var psi = new ProcessStartInfo
                {
                    FileName = jobDetails.FileName,
                    Arguments = jobDetails.Arguments,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    CreateNoWindow = true
                };

                var process = new Process();
                process.StartInfo = psi;
                process.Start();

                var output = new StringBuilder();
                output.Append(process.StandardOutput.ReadToEnd());
                output.Append(process.StandardError.ReadToEnd());

                process.WaitForExit();

                var success = process.ExitCode == 0;
                var description = $"{Environment.MachineName}: {jobDetails.JobName} {(success ? "succeeded" : "failed")}";

                var mailConfiguration = MailConfiguration.Initialize();

                var message = new MailMessage();
                message.From = new MailAddress(jobDetails.MailFrom);
                message.To.Add(new MailAddress(jobDetails.MailTo));
                message.Subject = description;
                if (!success) message.Priority = MailPriority.High;

                var content = new StringBuilder();
                content.AppendLine("<html>");
                content.AppendLine("<body>");
                content.AppendLine($"<h1>{description}</h1>");
                content.AppendLine("<pre><code>");
                content.Append(output);
                content.AppendLine("</code></pre>");
                content.AppendLine("</body>");
                content.AppendLine("</html>");

                message.IsBodyHtml = true;
                message.Body = content.ToString();

                mailConfiguration.SendMail(jobDetails.MailTo, message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
In de crontab wordt het dan dit:
code:
1
0 5 * * * dotnet /opt/mailer/Mailer.dll /scripts/usbbackup.py

Ik doe sommige hobbyprojecten wel 3 keer opnieuw in verschillende talen om te kijken wat nou het beste werkt...

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


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:55

Crazy D

I think we should take a look.

Lethalis schreef op woensdag 12 september 2018 @ 10:47:
Ik doe sommige hobbyprojecten wel 3 keer opnieuw in verschillende talen om te kijken wat nou het beste werkt...
Jij hebt tijd teveel :+

Exact expert nodig?


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 10:44

TheNephilim

Wtfuzzle

Nou inderdaad :p

Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Was het maar zo _O-

Sommige dingen laat ik gewoon wat moeilijk los. Dat begon al in mijn jeugd toen ik de ideale indeling van mijn kamer aan het uitpluizen was. Ik heb mijn meubilair toen wel 20 keer verplaatst.

Een beetje zoals Sheldon en zijn stoel in The Big Bang Theory :P

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


Acties:
  • +1 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@Lethalis : Kotlin ;)

Alle voordelen van Java zonder de nadelen.

https://niels.nu


  • Cloud
  • Registratie: November 2001
  • Laatst online: 15-09 15:38

Cloud

FP ProMod

Ex-moderatie mobster

Ik deed sommige hobby scripts wel vaak in python, voornamelijk voor de nieuwsgierigheid maar ook omdat het op veel plaatsen makkelijk gedraaid kan worden.

Ben nu eigenlijk wel een beetje uitgekeken op python en pak nu toch vaak .NET core als ik iets geinigs voor de hobby wil bouwen :) Voor scripts pak ik tegenwoordig vaak PowerShell als het niet ook op Linux hoeft te draaien. En soms bouw ik zo'n 'script' gewoon in C# in m'n al draaiende hobby project (wat draait op .NET core in Docker op m'n Synology).

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


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Na 15+ jaar programmeren nog steeds geen last van gehad, heb wel een voorraadje logitech M500 muizen liggen want alle andere zijn dus wel super vervelend.

Acties:
  • +2 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Nu online
Cloud schreef op woensdag 12 september 2018 @ 12:54:
Ik deed sommige hobby scripts wel vaak in python, voornamelijk voor de nieuwsgierigheid maar ook omdat het op veel plaatsen makkelijk gedraaid kan worden.

Ben nu eigenlijk wel een beetje uitgekeken op python en pak nu toch vaak .NET core als ik iets geinigs voor de hobby wil bouwen :) Voor scripts pak ik tegenwoordig vaak PowerShell als het niet ook op Linux hoeft te draaien. En soms bouw ik zo'n 'script' gewoon in C# in m'n al draaiende hobby project (wat draait op .NET core in Docker op m'n Synology).
Je hebt tegenwoordig ook een Powershell shell voor linux :+

[ Voor 8% gewijzigd door ThomasG op 12-09-2018 13:37 . Reden: url ]


  • Cloud
  • Registratie: November 2001
  • Laatst online: 15-09 15:38

Cloud

FP ProMod

Ex-moderatie mobster

$insert mother of god$

Ik heb wel Linux in mijn PowerShell Console (wat ook een aanrader is trouwens!) maar dat je ook PowerShell in je Linux kan stoppen wist ik niet :) Ga ik ook eens bekijken!

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


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 10:44

TheNephilim

Wtfuzzle

PowerShell bevalt prima, maar voor m'n develop VM gebruik ik 'git bash'. PowerShell icm. de VM werkt niet echt en 'git bash' icm. Windows is ook niet helemaal lekker.

  • hackerhater
  • Registratie: April 2006
  • Laatst online: 11:02
PrisonerOfPain schreef op woensdag 12 september 2018 @ 13:01:
[...]


Na 15+ jaar programmeren nog steeds geen last van gehad, heb wel een voorraadje logitech M500 muizen liggen want alle andere zijn dus wel super vervelend.
Het sloeg ook op een touchscreen gebruiken om te programmeren ipv een fisiek toetsenbord ;)

  • Merethil
  • Registratie: December 2008
  • Laatst online: 17:54
hackerhater schreef op woensdag 12 september 2018 @ 16:18:
[...]


Het sloeg ook op een touchscreen gebruiken om te programmeren ipv een fisiek toetsenbord ;)
....Waarom quotte je hem dan? Want hij had het over het gebruik van "het goedkoopste keyboard wat ik kan vinden".

  • hackerhater
  • Registratie: April 2006
  • Laatst online: 11:02
Merethil schreef op woensdag 12 september 2018 @ 16:22:
[...]


....Waarom quotte je hem dan? Want hij had het over het gebruik van "het goedkoopste keyboard wat ik kan vinden".
Misquote |:(

Ik had de bedoeling dit te quoten:
Ik heb dus letterlijk een collega gehad die programmeerde met het onscreen toetsenbord via zijn touch screen. :P

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

Cloud schreef op woensdag 12 september 2018 @ 14:34:
[...]

$insert mother of god$

Ik heb wel Linux in mijn PowerShell Console (wat ook een aanrader is trouwens!) maar dat je ook PowerShell in je Linux kan stoppen wist ik niet :) Ga ik ook eens bekijken!
ja.. ik vind het op zich wel ok dat dingen cross platform werken maar om nou te zeggen dat ik powershell een toegevoegd waarde vindt voor Linux?.. meh
Overigens wel enorme hulde voor de docs. Dat ziet er dan wel weer goed uit

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Douweegbertje schreef op vrijdag 14 september 2018 @ 01:15:
[...]


ja.. ik vind het op zich wel ok dat dingen cross platform werken maar om nou te zeggen dat ik powershell een toegevoegd waarde vindt voor Linux?.. meh
Overigens wel enorme hulde voor de docs. Dat ziet er dan wel weer goed uit
Ik zal eens testen hoe volwassen het is.

Je kan met PowerShell op Windows behoorlijk veel. Ik vind de syntax een beetje wonky, maar het feit dat je een volledige .Net scripting environment hebt, is wel handig.

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


Acties:
  • 0 Henk 'm!

  • bauke1994
  • Registratie: Maart 2011
  • Laatst online: 16:56
Douweegbertje schreef op vrijdag 14 september 2018 @ 01:15:
[...]

Overigens wel enorme hulde voor de docs. Dat ziet er dan wel weer goed uit
Hmm Ubuntu 18.10? Zijn ze dit jaar een maand te vroeg dan?

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

bauke1994 schreef op vrijdag 14 september 2018 @ 11:01:
[...]


Hmm Ubuntu 18.10? Zijn ze dit jaar een maand te vroeg dan?
Er staat "Er is ondersteuning voor Ubuntu 18.10 toegevoegd na 6.1.0-preview.3"

Ik ben hier geen expert in maar de "preview" build lijkt mij de 'beta'.

Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 15-09 15:38

Cloud

FP ProMod

Ex-moderatie mobster

Douweegbertje schreef op vrijdag 14 september 2018 @ 01:15:
[...]
ja.. ik vind het op zich wel ok dat dingen cross platform werken maar om nou te zeggen dat ik powershell een toegevoegd waarde vindt voor Linux?.. meh
Overigens wel enorme hulde voor de docs. Dat ziet er dan wel weer goed uit
Met Linux shell/bash kun je natuurlijk ook echt gruwelijk veel maar de api van PS is denk ik wel een stukje netter. Bij Linux shell is het toch een kwestie van alle commando's leren kennen, alleen zijn die vaak gewoon verschrikkelijk cryptisch in de naamgeving.

PS heeft ook absoluut zijn eigenaardigheden (ik kan nog nooit aan de pipe -> foreach syntax wennen en de return vanuit een function vind ik niet nice) maar het is wel een stuk duidelijker in de naamgeving omdat je niet tegen allerlei executables loopt te praten. En, je kunt inderdaad gewoon .NET gebruiken in je scripts.

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


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Hydra schreef op woensdag 12 september 2018 @ 12:48:
@Lethalis : Kotlin ;)

Alle voordelen van Java zonder de nadelen.
Ik zie trouwens (nu pas) dat Java 10 type inference heeft gekregen.

Het moet niet gekker worden :)

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


Acties:
  • 0 Henk 'm!

  • OmgItsKoen
  • Registratie: September 2013
  • Laatst online: 12-09 09:18
.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Ergodox met Gateron Browns erin. Ben nog steeds aan het twijfelen om een Ergodox Ez te kopen en dan met Zealios erin. Maarja mijn portemonnee is het daar niet zo mee eens, om nog maar te zwijgen over mijn vriendin. :+

Acties:
  • 0 Henk 'm!

  • TheMaxMan
  • Registratie: Maart 2018
  • Laatst online: 14-09 10:29
Ik ben JavaScript aan het leren op mezelf en heb als een soort van leeroefening een web app gemaakt. Ik zou de code graag laten nakijken om te weten te komen wat er beter kan qua programmeerstijl (code review). De ‘main’ file is 140 lijnen, de code in html die daarmee omgaat nog eens 50 lijnen.

Kan/mag ik de code in de Devschuur posten?

Acties:
  • 0 Henk 'm!

  • Ryur
  • Registratie: December 2007
  • Laatst online: 15-09 20:28
.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Ikzelf werk momenteel op een DasKeyboard 4 Pro met blue cherry's.

Heb ook nog een DasKeyboard 3 Ultimate met Brown cherry's liggen, maar vind ik niet zo fijn tiepen eigenlijk.

Zit nu te kijken voor Code Keyboard met Clear cherry's, maar ben opzich bang dat ik weer een 'miskoop' heb zoals mijn Das met Brown.

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Cloud schreef op vrijdag 14 september 2018 @ 11:55:
[...]

Met Linux shell/bash kun je natuurlijk ook echt gruwelijk veel maar de api van PS is denk ik wel een stukje netter. Bij Linux shell is het toch een kwestie van alle commando's leren kennen, alleen zijn die vaak gewoon verschrikkelijk cryptisch in de naamgeving.

PS heeft ook absoluut zijn eigenaardigheden (ik kan nog nooit aan de pipe -> foreach syntax wennen en de return vanuit een function vind ik niet nice) maar het is wel een stuk duidelijker in de naamgeving omdat je niet tegen allerlei executables loopt te praten. En, je kunt inderdaad gewoon .NET gebruiken in je scripts.
Dat komt omdat de "glue" in Unix text is. Daarom zijn er ook zoveel losse commando's die niets anders doen dan tekst wranglen, zodat je de output van een commando weer als input voor de volgende kunt gebruiken. Doe iets en doe het goed en laat de rest aan iets anders over, komt bij dat er in Unix redelijk wat conventies zijn over hoe een programma parameters moet krijgen en hoe deze zich moet gedragen. In Powershell ben je afhankelijk van de API en commandlets die gespecificeerd zijn anders wordt het al flink lastig.

Het is een elegante manier van naar een systeem kijken en wat nog veel belangrijker is dit dan ook doorvoeren in alles ( alles is een file ) zodat dit in alle facetten van het systeem is te gebruiken. Zie proc. SystemD daargelaten. :)

[ Voor 6% gewijzigd door Sandor_Clegane op 14-09-2018 12:27 ]

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Op het werk een CM Storm quickfire XT met Cherry browns. Thuis een Ducky Zero 9008, ook met brown switches.
MaxVMH schreef op vrijdag 14 september 2018 @ 12:18:
Ik ben JavaScript aan het leren op mezelf en heb als een soort van leeroefening een web app gemaakt. Ik zou de code graag laten nakijken om te weten te komen wat er beter kan qua programmeerstijl (code review). De ‘main’ file is 140 lijnen, de code in html die daarmee omgaat nog eens 50 lijnen.

Kan/mag ik de code in de Devschuur posten?
Waarom niet als een los topic? Is waarschijnlijk een stukje handiger. Kunnen we hier doorgaan over shells.
Sandor_Clegane schreef op vrijdag 14 september 2018 @ 12:25:
[...]

Doe iets en doe het goed en laat de rest aan iets anders over
[...]
Dit is ook echt iets wat meer mensen moeten gaan begrijpen... Te veel frameworks en standaarden die hetzelfde proberen te bereiken en maar een eigen ding zijn gestart omdat het net niet 100% doet wat ze willen. Af en toe moet je gewoon je willen bijstellen :+


BTW: gebruikt er iemand zsh? en hoe bevalt het? Zie het wel eens langs komen, maar ken maar 1 iemand die het gebruikt.

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Gropah schreef op vrijdag 14 september 2018 @ 12:35:
[...]


Waarom niet als een los topic? Is waarschijnlijk een stukje handiger. Kunnen we hier doorgaan over shells.
Ik denk niet dat hij bedoelde om die files in deze thread te plempen. :)

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 16:03
Sandor_Clegane schreef op vrijdag 14 september 2018 @ 12:25:
[...]


Dat komt omdat de "glue" in Unix text is. Daarom zijn er ook zoveel losse commando's die niets anders doen dan tekst wranglen, zodat je de output van een commando weer als input voor de volgende kunt gebruiken. Doe iets en doe het goed en laat de rest aan iets anders over, komt bij dat er in Unix redelijk wat conventies zijn over hoe een programma parameters moet krijgen en hoe deze zich moet gedragen. In Powershell ben je afhankelijk van de API en commandlets die gespecificeerd zijn anders wordt het al flink lastig.

Het is een elegante manier van naar een systeem kijken en wat nog veel belangrijker is dit dan ook doorvoeren in alles ( alles is een file ) zodat dit in alle facetten van het systeem is te gebruiken. Zie proc. SystemD daargelaten. :)
In het boek designing data-intenisve applications beschrijft Martin Kleppman wel aardig hoe Unix pipelines werken en hoe dat eigenlijk op veel vlakken een voorloper is van bijvoorbeeld hadoop en stream processing technologieën die je vandaag de dag veel ziet. Dat boek is sowieso wel een aanrader trouwens voor een aardig overzicht van databasetechnologie in de breedste zin van het woord.

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


Acties:
  • 0 Henk 'm!

  • bauke1994
  • Registratie: Maart 2011
  • Laatst online: 16:56
MaxVMH schreef op vrijdag 14 september 2018 @ 12:18:
Ik ben JavaScript aan het leren op mezelf en heb als een soort van leeroefening een web app gemaakt. Ik zou de code graag laten nakijken om te weten te komen wat er beter kan qua programmeerstijl (code review). De ‘main’ file is 140 lijnen, de code in html die daarmee omgaat nog eens 50 lijnen.

Kan/mag ik de code in de Devschuur posten?
Gooi het op Github en link ernaar. En een eigen topicje aanmaken kan ook geen kwaad, houdt het wat overzichtelijker voor jezelf en de andere onderwerpen die hier gaande zijn.
Douweegbertje schreef op vrijdag 14 september 2018 @ 11:23:
[...]


Er staat "Er is ondersteuning voor Ubuntu 18.10 toegevoegd na 6.1.0-preview.3"

Ik ben hier geen expert in maar de "preview" build lijkt mij de 'beta'.
Ubuntu 18.10 is nog niet uit, maar ubuntu 18.04 wordt bovenaan niet (meer) getoond.
Het lijkt er een beetje op dat ze Ubuntu 17.10 maar gelijk hebben aangepast naar 18.10.

[ Voor 26% gewijzigd door bauke1994 op 14-09-2018 12:51 ]


Acties:
  • 0 Henk 'm!

  • TheMaxMan
  • Registratie: Maart 2018
  • Laatst online: 14-09 10:29
Gropah schreef op vrijdag 14 september 2018 @ 12:35:[...]


Waarom niet als een los topic? Is waarschijnlijk een stukje handiger. Kunnen we hier doorgaan over shells.
Sandor_Clegane schreef op vrijdag 14 september 2018 @ 12:37:
[...]


Ik denk niet dat hij bedoelde om die files in deze thread te plempen. :)
Het is inderdaad de bedoeling om in een eigen / los topic te posten. Nu kan je het terug rustig over shells hebben :)
bauke1994 schreef op vrijdag 14 september 2018 @ 12:45:
[...]


Gooi het op Github en link ernaar. En een eigen topicje aanmaken kan ook geen kwaad, houdt het wat overzichtelijker voor jezelf en de andere onderwerpen die hier gaande zijn.
Geen probleem, komt in orde!

[ Voor 23% gewijzigd door TheMaxMan op 14-09-2018 12:49 ]


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 10:44

TheNephilim

Wtfuzzle

.oisyn schreef op dinsdag 11 september 2018 @ 12:28:
Dus, welk toetsenbord gebruiken jullie nu? :+
Op kantoor een Filco Majestouch 2 met Cherry MX Blue, thuis een Max Keyboard Nighthawk x7 met Cherry MX Brown. M'n vriendin heeft een Ducky met Cherry MX Red.

Cherry MX Brown zou ik niet snel weer voor kiezen; Red is lekker smooth voor gamen en Blue lekker hard voor typen. Brown zit er weer net tussenin.

Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Apple wired keyboard met numpad. Zijn ze ermee gestopt, hondjes. :(

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • DevWouter
  • Registratie: Februari 2016
  • Laatst online: 17:33

DevWouter

Creator of Todo2d.com

Gropah schreef op vrijdag 14 september 2018 @ 12:35:
BTW: gebruikt er iemand zsh? en hoe bevalt het? Zie het wel eens langs komen, maar ken maar 1 iemand die het gebruikt.
Dan ken je er nu twee. Ik vind https://ohmyz.sh/ heerlijk om te gebruiken. Wel was ik de eerste dagen aan het spelen met plugins en themes om "de perfecte shell" te maken om vervolgens het opnieuw te installeren en het vrij basic te houden.
TheNephilim schreef op vrijdag 14 september 2018 @ 12:49:
Cherry MX Brown zou ik niet snel weer voor kiezen; Red is lekker smooth voor gamen en Blue lekker hard voor typen. Brown zit er weer net tussenin.
Mijn probleem is dat ik met MX Brown vrij makkelijk tot de bodem ga. Nu heb ik geen ervaring met andere switches, maar jij wel. Dus... is dat voor jou ook de reden dat jij blue fijner vindt of heeft dat een andere reden?

"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


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 15-09 21:04

Lye

Sandor_Clegane schreef op vrijdag 14 september 2018 @ 12:52:
Apple wired keyboard met numpad. Zijn ze ermee gestopt, hondjes. :(
Wablief? Ik heb net 2 weken terug een keyboard met numpad en een draadje bij Apple zelf besteld.. Het nieuwe Bluetooth keyboard werkt ook puur via lightning kabel, zonder bluetooth (zou ook bijzonder zijn, mijn desktop heeft geen bluetooth dongle).

Apple keyboard is dus ook mijn standaard keyboard. Ben ongeveer een half jaar opzoek geweest naar een fatsoenlijk keyboard. Heel veel mechanische toetsenborden (met verschillende switches) getest, maar ik kon er maar niet aan wennen. Uiteindelijk ging het tussen een (hier eerder vermeld) Microsoft toetsenbord en een Apple keyboard, waarbij de keuze is gevallen op Apple. Het werkt niet helemaal 100% in combinatie met Ubuntu (Media keys die niet werken, Option/Alt en Command/Super keys die omgedraaid zijn), maar ik ben er ondertussen aan gewend. Wat wel bijzonder is, is dat mijn desktop keyboard nu minder travel heeft dan mijn Thinkpad's keyboard (die ik al vrij minimaal vond :P).
Gropah schreef op vrijdag 14 september 2018 @ 12:35:
[...]
BTW: gebruikt er iemand zsh? en hoe bevalt het? Zie het wel eens langs komen, maar ken maar 1 iemand die het gebruikt.
Ja, hier. Icm met Oh My Zsh. Ik vind het eigenlijk niet heel anders dan Bash, al mis ik wel functionaliteit als ik een keer geen zsh kan gebruiken. Ik vind vooral Oh My Zsh's git integratie ideaal, je ziet direct of je repo changes heeft of up to date is.

[ Voor 3% gewijzigd door Lye op 14-09-2018 13:15 ]


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Lye schreef op vrijdag 14 september 2018 @ 13:13:
[...]


Wablief? Ik heb net 2 weken terug een keyboard met numpad en een draadje bij Apple zelf besteld.. Het nieuwe Bluetooth keyboard werkt ook puur via lightning kabel, zonder bluetooth (zou ook bijzonder zijn, mijn desktop heeft geen bluetooth dongle).
Welke bedoel je? Die van 140 Euro oid? Ik bedoel die van 60 met een USB hub. Man wat een fijn ding is dat.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Hipska
  • Registratie: Mei 2008
  • Laatst online: 15-09 21:08
Ik heb die ook. Destijds gekocht via eBay denk ik zelfs. (US Intl indeling, platte return toets)

Acties:
  • +1 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 10:44

TheNephilim

Wtfuzzle

DevWouter schreef op vrijdag 14 september 2018 @ 13:05:
[...]

Mijn probleem is dat ik met MX Brown vrij makkelijk tot de bodem ga. Nu heb ik geen ervaring met andere switches, maar jij wel. Dus... is dat voor jou ook de reden dat jij blue fijner vindt of heeft dat een andere reden?
Echt een probleem heb ik er niet mee, maar die Red en Blue switches hebben echt een bepaald gevoel; smooth en clicky. Brown doet beide eigenlijk niet.

Bottomen ga ik nooit afleren denk ik, waren Clears niet de wat zwaardere Blue switch? Misschien is dat een idee.

Acties:
  • 0 Henk 'm!

  • Ryur
  • Registratie: December 2007
  • Laatst online: 15-09 20:28
TheNephilim schreef op vrijdag 14 september 2018 @ 13:48:
[...]

Bottomen ga ik nooit afleren denk ik, waren Clears niet de wat zwaardere Blue switch? Misschien is dat een idee.
Wat ik er juist van weet zijn Clears juist Blue's maar met minder geluid :)

En ja, doordat ik continu aan het bottomen ben vind ik mijn Browns niet zo fijn!

Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 15-09 21:04

Lye

Sandor_Clegane schreef op vrijdag 14 september 2018 @ 13:30:
[...]


Welke bedoel je? Die van 140 Euro oid? Ik bedoel die van 60 met een USB hub. Man wat een fijn ding is dat.
Jup, misselijk duur. Maar er is nog steeds een Apple keyboard met kabel dus :P

Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Nu online
Gropah schreef op vrijdag 14 september 2018 @ 12:35:
[...]

BTW: gebruikt er iemand zsh? en hoe bevalt het? Zie het wel eens langs komen, maar ken maar 1 iemand die het gebruikt.
zsh is O+ Het heeft een hoop features die het allemaal een stuk aangenamer maken, vooral in combinatie met bijvoorbeeld zpresto.

Iets wat ik zelf veelvuldig gebruik is dat je commando's kunt completen op basis van je history. Normaal gesproken als je pijl omhoog gebruikt, krijg je het vorige commando. Typ ik eerst bijvoorbeeld: $ mvn clean, en druk dan pijl omhoog krijg ik de history op dat specifieke commando en kan daar tussen cyclen. Nu kun je dat ook deels doen met reverse-i-search, maar dat werkt niet zo gemakkelijk.

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

ThomasG schreef op vrijdag 14 september 2018 @ 14:14:
[...]
zsh is O+ Het heeft een hoop features die het allemaal een stuk aangenamer maken, vooral in combinatie met bijvoorbeeld zpresto.

Iets wat ik zelf veelvuldig gebruik is dat je commando's kunt completen op basis van je history. Normaal gesproken als je pijl omhoog gebruikt, krijg je het vorige commando. Typ ik eerst bijvoorbeeld: $ mvn clean, en druk dan pijl omhoog krijg ik de history op dat specifieke commando en kan daar tussen cyclen. Nu kun je dat ook deels doen met reverse-i-search, maar dat werkt niet zo gemakkelijk.
zsh + iterm2 hier :)

Acties:
  • +1 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
hier ook ohmyzsh gebruiker, met gianu theme (vrij basic). Bash voelt echt héél onhandig en ouderwets sinds ik ohmyzsh gewend ben.

En aangezien we allemaal weer toetsenborden aan het listen zijn, heb sinds een paar maanden deze op mijn werk liggen: pricewatch: Sharkoon PureWriter Kailh Blue . Gekozen omdat 'ie low-profile keys heeft (de hoogte van de meeste mech. keyboards staat me heel erg tegen). En krijg veel positieve reacties van collega's die al jaren mechanische toetsenborden gebruiken.
Nadeel is dat ik 'm nu ook thuis wil want dat rubberdome toetsenbord voelt nu zó sponzig aan... Once you go mech... :N

Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik zelf ook zsh met ohmyzsh en ik vindt de history en auto-complete heel handig.

Qua toetsenbord heb ik pricewatch: Sharkoon Skiller Mech SGK1 (Kailh Brown) Qwerty US, maar die vind ik er een beetje te 'gamerig' uitzien en de polssteun vind ik niet zo fijn. Ik vind de Kailh Brown op zich best fijn typen en ik bottom ook niet, maar voor die ene keer dat ik game, bottom ik bijvoorbeeld W wel, want als ik hem net voorbij het activation point houd, registreert hij het net wel of net niet, maar dat is heel irritant, want op een gegeven moment dat het pijn doen om W zo ingedrukt te houden.

Acties:
  • +1 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
@Hydra Ik heb mij er aan gewaagd om een Kotlin versie te maken :P

Wel helemaal nog met een Java mind set, dus ik doe nog weinig met de functionele aspecten van Kotlin. Die moet ik nog uitzoeken / leren. Ook zijn er vast nog een hoop dingen die beter kunnen.

Maar het werkt alvast wel :+

[update] Ik heb de code inmiddels verbeterd :P
Kotlin:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package mailer

import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import java.nio.file.Files
import java.nio.file.Paths
import org.apache.commons.mail.DefaultAuthenticator
import org.apache.commons.mail.HtmlEmail
import java.io.BufferedReader
import java.io.InputStreamReader
import java.net.InetAddress


class MailConfiguration {
    var server: String = "127.0.0.1"
    var port: Int = 25
    var useSSL: Boolean = false
    var useCredentials: Boolean = false
    var username: String? = null
    var password: String? = null
}

fun initMailConfiguration(): MailConfiguration {
    val xmlMapper = XmlMapper()
    xmlMapper.enable(SerializationFeature.INDENT_OUTPUT)

    val homePath = Paths.get(System.getProperty("user.home"))
    val configPath = homePath.resolve("Mailer.Config")

    if (Files.exists(configPath)) {
        val result = xmlMapper.readValue(configPath.toFile(), MailConfiguration::class.java)
        return result
    } else {
        var defaultConfiguration = MailConfiguration()
        xmlMapper.writeValue(configPath.toFile(), defaultConfiguration)
        return defaultConfiguration
    }
}

data class JobDetails (
    val mailTo: String,
    val mailFrom: String,
    val jobName: String,
    val arguments: Array<String>
)

class JobException(override var message: String) : Exception(message)

fun initJobDetails(args: Array<String>): JobDetails {

    val mailTo = System.getenv("MAILTO")
    val mailFrom = System.getenv("MAILFROM")
    val jobName = System.getenv("JOBNAME")

    if (mailTo == null) throw JobException("MAILTO environment variable not set")
    if (mailFrom == null) throw JobException("MAILFROM environment variable not set")
    if (jobName == null) throw JobException("JOBNAME environment variable not set")
    if (args.count() == 0) throw JobException("Please specify a command")

    return JobDetails(mailTo, mailFrom, jobName, args)
}

data class JobResult(val exitCode: Int, val output: String)

fun runJob(job: JobDetails): JobResult {
    val builder = ProcessBuilder(job.arguments.toList())
    builder.redirectErrorStream(true)

    val process = builder.start()

    val sb = StringBuilder()

    BufferedReader(InputStreamReader(process.inputStream)).use { reader ->
        var line = reader.readLine()
        while (line != null) {
            sb.append(line)
            sb.append(System.getProperty("line.separator"))
            line = reader.readLine()
        }
    }

    process.waitFor()

    return JobResult(process.exitValue(), sb.toString())
}

fun main(args: Array<String>) {

    try {
        val cfg = initMailConfiguration()
        val job = initJobDetails(args)
        val jobResult = runJob(job)

        val address = InetAddress.getLocalHost()
        val description = "${address.hostName}: ${job.jobName} ${if (jobResult.exitCode == 0) "succeeded" else "failed"}"

        val html = """
            <html>
            <body>
                <h1>${description}</h1>
                <pre><code>${jobResult.output}</code></pre>
            </body>
            </html>
        """.trimIndent()

        // Mail the results
        val email = HtmlEmail()
        email.hostName = cfg.server
        email.setSmtpPort(cfg.port)
        if (cfg.useSSL) {
            email.isStartTLSEnabled = true
        }

        if (cfg.useCredentials) {
            email.setAuthenticator(DefaultAuthenticator(cfg.username, cfg.password))
        }

        email.setFrom(job.mailFrom)
        email.addTo(job.mailTo)
        email.subject = description
        email.setHtmlMsg(html)

        email.send()
    } catch (ex: Exception) {
        println(ex.message)
    }
}

[ Voor 12% gewijzigd door Lethalis op 15-09-2018 14:38 ]

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

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