abonnement Unibet Coolblue Bitvavo
pi_150668751
quote:
0s.gif Op zondag 15 maart 2015 17:13 schreef mstx het volgende:

[..]

C# en C++
Geeft de compiler ook geen warnings?
pi_150668886
quote:
10s.gif Op zondag 15 maart 2015 16:45 schreef mstx het volgende:

[..]

[ afbeelding ]

[ afbeelding ]

:W
Oh dat is niet de reden dat JavaScript, maar vooral PHP zulke beroerde talen zijn hoor.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150669306
quote:
0s.gif Op zondag 15 maart 2015 17:13 schreef mstx het volgende:

[..]

C# en C++
In C met GCC en -Wall wordt er ook geen foutmelding weergeven. :o
pi_150671840
Ik vind die komma aan het einde van een array ideaal! Als 'ie ontbreekt voeg ik hem juist vaak toe. En ik vind het ook moeilijk irritant dat je 'm in SQL niet mag plaatsen.

Het maakt het uitbreiden van arrays een stuk makkelijker en de kans dat je een syntax error krijgt omdat je een komma vergeten bent in de regel boven de regel die je toegevoegd hebt, veel kleiner.
pi_150673760
Dat kan ik echt niet bevatten. Het is voor mij echt... Onbegrijpelijk.

:{
pi_150674614
quote:
1s.gif Op zondag 15 maart 2015 17:26 schreef Monolith het volgende:

[..]

Oh dat is niet de reden dat JavaScript, maar vooral PHP zulke beroerde talen zijn hoor.
Beste van twee werelden door Nederlands bedrijf :+
http://www.php-cpp.com
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  zondag 15 maart 2015 @ 20:24:07 #157
187069 slacker_nl
Sicko pur sang
pi_150674754
Ow ja, en in JSON mag je geen single quotes gebruiken en mag je ook geen trailing , gebruiken. HAAAAAAT (idem voor SQL, haaaaat). Trailing comma == bliss,
In theory there is no difference between theory and practice. In practice there is.
pi_150675075
quote:
14s.gif Op zondag 15 maart 2015 18:54 schreef KomtTijd... het volgende:
Ik vind die komma aan het einde van een array ideaal! Als 'ie ontbreekt voeg ik hem juist vaak toe. En ik vind het ook moeilijk irritant dat je 'm in SQL niet mag plaatsen.

Het maakt het uitbreiden van arrays een stuk makkelijker en de kans dat je een syntax error krijgt omdat je een komma vergeten bent in de regel boven de regel die je toegevoegd hebt, veel kleiner.
Bijkomend voordeel is dat je diffs kleiner blijven omdat je geen regel wijzigt door er alleen een komma aan toe te voegen als je een extra regel aan de array wilt toevoegen. En, zeker als je met een groter team werkt, is het wel handig dat git blame de juiste persoon bij en de juiste reden van een wijziging laat zien.
  zondag 15 maart 2015 @ 20:39:36 #159
12221 Tijn
Powered by MS Paint
pi_150675620
quote:
0s.gif Op zondag 15 maart 2015 20:24 schreef slacker_nl het volgende:
Ow ja, en in JSON mag je geen single quotes gebruiken en mag je ook geen trailing , gebruiken. HAAAAAAT (idem voor SQL, haaaaat). Trailing comma == bliss,
Zit je zo vaak handmatig JSON-files te schrijven, dan? :?
  zondag 15 maart 2015 @ 20:42:28 #160
187069 slacker_nl
Sicko pur sang
pi_150675781
quote:
5s.gif Op zondag 15 maart 2015 20:39 schreef Tijn het volgende:

[..]

Zit je zo vaak handmatig JSON-files te schrijven, dan? :?
Ja, chef data bag files zijn JSON.
In theory there is no difference between theory and practice. In practice there is.
pi_150675831
quote:
5s.gif Op zondag 15 maart 2015 20:39 schreef Tijn het volgende:

[..]

Zit je zo vaak handmatig JSON-files te schrijven, dan? :?
als je je API zit te testen wil dat best nog wel eens voorkomen ja. Maar van JSON waardeer ik het wel weer dat het flink strict is, voor een transport protocol heeft dat absoluut voordelen.
pi_150675899
quote:
0s.gif Op zondag 15 maart 2015 20:24 schreef slacker_nl het volgende:
Ow ja, en in JSON mag je geen single quotes gebruiken en mag je ook geen trailing , gebruiken. HAAAAAAT (idem voor SQL, haaaaat). Trailing comma == bliss,
Gewoon terecht. Die trailing komma is voor mensen met een komma-fetish.

Plus het gaat me om het principe dat het een scheidingsteken is voor elementen. Je gaat toch ook niet achter parameters een extra komma zetten voor het geval de methode een extra parameter krijgt?

[ Bericht 5% gewijzigd door #ANONIEM op 15-03-2015 20:57:33 ]
pi_150676087
quote:
14s.gif Op zondag 15 maart 2015 20:43 schreef KomtTijd... het volgende:

[..]

als je je API zit te testen wil dat best nog wel eens voorkomen ja. Maar van JSON waardeer ik het wel weer dat het flink strict is, voor een transport protocol heeft dat absoluut voordelen.
Het is een data format, geen transport protocol.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  zondag 15 maart 2015 @ 20:52:05 #164
187069 slacker_nl
Sicko pur sang
pi_150676323
quote:
1s.gif Op zondag 15 maart 2015 20:44 schreef robin007bond het volgende:
[ afbeelding ] Op zondag 15 maart 2015 20:24 schreef slacker_nl het volgende:
Ow ja, en in JSON mag je geen single quotes gebruiken en mag je ook geen trailing , gebruiken. HAAAAAAT (idem voor SQL, haaaaat). Trailing comma == bliss,
Gewoon terecht. Die trailing komma is voor mensen met een komma-fetish.

Plus het gaat me om het principe dat het een scheidingsteken is voor elementen. Je gaat toch ook niet achter parameters een extra komma zetten voor het geval de methode een extra parameter krijgt?
[/quote]

jawel.

Ik heb regelmatig:
1
2
3
4
5
6
7
8
9
10
XXX::Foo->new(
    foo => bar, 
);

of 

XXX::Foo->new(
    foo => bar, 
    baz => fubar,
);

Plus als ik alles ga sorten en zulks, breekt er niks omdat de komma plots verdwenen is midden in m'n lijst.
In theory there is no difference between theory and practice. In practice there is.
pi_150676661
quote:
1s.gif Op zondag 15 maart 2015 20:48 schreef Monolith het volgende:

[..]

Het is een data format, geen transport protocol.
Inderdaad. HTTP is een transport protocol, maar JSON niet.
pi_150677072
quote:
1s.gif Op zondag 15 maart 2015 20:48 schreef Monolith het volgende:

[..]

Het is een data format, geen transport protocol.
Je hebt gelijk maar je begrijpt wat ik bedoel :P
pi_150677483
quote:
14s.gif Op zondag 15 maart 2015 21:04 schreef KomtTijd... het volgende:

[..]

Je hebt gelijk maar je begrijpt wat ik bedoel :P
Natuurlijk begrijp ik dat, maar op zich maakt het niet zoveel uit of je nou wel of niet dat soort constructies toestaat. Als de specs maar duidelijk en ondubbelzinnig zijn.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150677888
quote:
0s.gif Op zondag 15 maart 2015 20:52 schreef slacker_nl het volgende:

[..]

Ik heb regelmatig:
[ code verwijderd ]

Plus als ik alles ga sorten en zulks, breekt er niks omdat de komma plots verdwenen is midden in m'n lijst.
Oh, ik bedoelde niet als je een array meegeeft als parameter van een functie (de vraag is alleen of je niet liever een object meegeeft in plaats van een array, maar dat terzijde). De builder-pattern vind ik eerlijk gezegd geschikter dan een functie maken die allerlei config-opties vereist in een array.

Maar ik bedoelde meer dus dit:

1
2
function blabla(x, y,) {
}

Jij zou dat ook echt zo doen? :o
pi_150678313
quote:
1s.gif Op zondag 15 maart 2015 21:11 schreef Monolith het volgende:

[..]

Natuurlijk begrijp ik dat, maar op zich maakt het niet zoveel uit of je nou wel of niet dat soort constructies toestaat. Als de specs maar duidelijk en ondubbelzinnig zijn.
Meh, dan krijg je weer dat parsers foutcorrectie gaan doen enzo en protocollen die onterecht rekenen op die foutcorrectie en wordt de boel allemaal omslachtiger en trager. JSON is juist zo lekker lean en efficiėnt, houden zo. Heb volgens mij ooit ergens gelezen dat de JSON_ functies van PHP sneller zijn dan haar eigen serialize() en unsereialize().
pi_150678403
Over JSON in PHP gesproken. Als je een klasse wil serializen naar JSON, dan moeten de properties per se public zijn, want anders worden ze niet in de JSON opgenomen. :')
pi_150678554
quote:
0s.gif Op zondag 15 maart 2015 21:32 schreef robin007bond het volgende:
Over JSON in PHP gesproken. Als je een klasse wil serializen naar JSON, dan moeten de properties per se public zijn, want anders worden ze niet in de JSON opgenomen. :')
Een class serializen? Neem aan dat je een object bedoelt. En ja dat lijkt me nogal logisch toch? Waarom zou je ooit een private property willen exporteren? Als dat de bedoeling is kan het haast niet de bedoeling zijn dat die property private is.
pi_150678620
quote:
1s.gif Op zondag 15 maart 2015 21:35 schreef KomtTijd... het volgende:

[..]

Een class serializen? Neem aan dat je een object bedoelt. En ja dat lijkt me nogal logisch toch? Waarom zou je ooit een private property willen exporteren? Als dat de bedoeling is kan het haast niet de bedoeling zijn dat die property private is.
Uiteraard bedoel ik een object.

Maar dat vind ik niet heel logisch. Het is namelijk goed gebruik dat je accessor-methodes gebruikt voor velden in plaats van de variabelen public te maken.
pi_150679051
Sja dan wordt het sowieso een moeilijk verhaal want dan wil je ook dat eventuele logica in de accessors uitgevoerd wordt. Als je ingewikkelder objecten wilt serializen kun je beter een wat geavanceerde de serializer library gebruiken zoals jms.
pi_150681747
quote:
0s.gif Op zondag 15 maart 2015 21:32 schreef robin007bond het volgende:
Over JSON in PHP gesproken. Als je een klasse wil serializen naar JSON, dan moeten de properties per se public zijn, want anders worden ze niet in de JSON opgenomen. :')
Nee hoor. Als die class de interface JsonSerializable implementeert (en dus een functie jsonSerialize moet hebben) kan de class perfect zelf bepalen wat er wel en hoe naar json omgezet moet worden.
pi_150681982
quote:
14s.gif Op zondag 15 maart 2015 21:45 schreef KomtTijd... het volgende:
Sja dan wordt het sowieso een moeilijk verhaal want dan wil je ook dat eventuele logica in de accessors uitgevoerd wordt. Als je ingewikkelder objecten wilt serializen kun je beter een wat geavanceerde de serializer library gebruiken zoals jms.
Valt wel mee. Vaak worden de Javabeans conventies gebruikt.
In Java heb je bovendien nog weer transient voor zaken die niet geserialized moeten worden.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150690613
MySQL 5.7: InnoDB Intrinsic Tables
The MySQL Optimizer sometimes needs a temporary data-store during query processing, for storing intermediate results. Before MySQL 5.7, this need was serviced exclusively using a combination of the HEAP/MEMORY storage engine (for smaller tables) and the MyISAM storage engine (for larger tables). You can find more information on when disk based temporary tables (MyISAM or InnoDB) are used instead of MEMORY tables here.

The InnoDB storage engine has been the default engine used for user tables since MySQL 5.6, but MyISAM was still used for internal disk based temporary tables (for some related notes, see this excellent blog post by Jaime Crespo). This legacy behavior lead to many headaches, both for our users and for our developers. For example, see Stewart Smith’s excellent write up on some of the related problems. In order to address the related issues in MySQL 5.7, we’ve had to do a lot of work within both InnoDB and the Optimizer to lay the groundwork for what we’ll talk about next. You can read about all of the related 5.7 work leading up to this point here.

Optimizer Switches to InnoDB Instrinsic Tables
InnoDB is our MVCC ACID compliant storage engine, and as part of our larger effort to decouple the MyISAM storage engine from MySQL itself so that it becomes an optional engine, starting with MySQL 5.7.6 InnoDB is now the default storage engine used for internal disk based temporary tables. The engine used can be controlled using the new internal_tmp_disk_storage_engine server option.

In our efforts to make this change in MySQL 5.7.6, we have made changes to InnoDB so that it performs as good or better (often far better) than MyISAM when used for internal disk based temporary tables. To fulfill this use-case, we created a new type of table within InnoDB called intrinsic tables, which have relaxed MVCC and ACID semantics. These tables are a special type of temporary InnoDB table that do not perform any UNDO or REDO logging (REDO logging is disabled for all temporary InnoDB tables). As the name suggests, these tables are meant for internal use only and thus can only be used by an internal MySQL module such as the Optimizer. In other words, end-users will not be able to explicitly create these new types of tables (they are also not visible in the innodb_temp_table_info table). We will, however, leverage this new type of table for future end-user focused work. So stay tuned!

[…]


When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  maandag 16 maart 2015 @ 11:24:39 #177
187069 slacker_nl
Sicko pur sang
pi_150690913
quote:
0s.gif Op zondag 15 maart 2015 21:21 schreef robin007bond het volgende:

[..]

Oh, ik bedoelde niet als je een array meegeeft als parameter van een functie (de vraag is alleen of je niet liever een object meegeeft in plaats van een array, maar dat terzijde). De builder-pattern vind ik eerlijk gezegd geschikter dan een functie maken die allerlei config-opties vereist in een array.

Maar ik bedoelde meer dus dit:
[ code verwijderd ]

Jij zou dat ook echt zo doen? :o
Of je nou named parameters of niet gebruikt, maakt niet uit of je wel/geen objecten gebruikt in je calls.

Maar in functies heb ik die stijl niet nodig, in perl kan je het zo doen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub foo {
    my ($self, $foo, $bar, undef, $baz,) = @_;
}

$self->foo($foo, $bar, 'Ignore me', $object->baz);

# Deze is ook wel fijn
sub foo {
    my $self = shift;
    my %named = @_;
}

$self->foo(
    foo => $foo_object,
    baz => $baz_object,
);
In theory there is no difference between theory and practice. In practice there is.
pi_150698573
Wellicht is hier iemand die me kan helpen.

Ik werk via MS Acces met een Databank. Sinds kort heb ik beetje kennis van SQL, maar hier kom ik even niet uit. Ik heb een tabel met daarin een datum, ik wil graag 2 maanden bij deze datum optellen. Ik kom op internet alleen de DateAdd functie tegen, maar op de een of andere manier werkt het niet.

Ik heb het volgende ingevoerd:

DateAdd("m",2, [ Date ] )

Acces geeft de foutcode: De syntax van de expressie die u hebt opgegeven, is ongeldig. Er ontbreekt een operand of operator, u hebt een ongeldig teken of ongeldige komma opgegeven of u hebt de tekst in de expressie niet tussen aanhalingstekens geplaatst.
  maandag 16 maart 2015 @ 16:43:26 #179
187069 slacker_nl
Sicko pur sang
pi_150702421
quote:
0s.gif Op maandag 16 maart 2015 15:04 schreef Crohnjurist het volgende:
DateAdd("m",2, [ Date ] )
denk dat dit het moet zijn:
1DateAdd("m", 2,  [Date]) 

Volgens mij pikt ie de spaties rond "Date" niet.
In theory there is no difference between theory and practice. In practice there is.
pi_150727100
quote:
0s.gif Op maandag 16 maart 2015 16:43 schreef slacker_nl het volgende:

[..]

denk dat dit het moet zijn:
[ code verwijderd ]

Volgens mij pikt ie de spaties rond "Date" niet.
Nee, sorry, ik had die spaties alleen hier toegevoegd, omdat het anders niet zichtbaar is op fok!..

Maar het werkt dus nog steeds niet, nog een ander idee hoe ik twee maanden kan toevoegen? Misschien een andere functie ipv DateAdd?
  dinsdag 17 maart 2015 @ 10:02:31 #181
187069 slacker_nl
Sicko pur sang
pi_150727268
quote:
0s.gif Op dinsdag 17 maart 2015 09:57 schreef Crohnjurist het volgende:

[..]

Nee, sorry, ik had die spaties alleen hier toegevoegd, omdat het anders niet zichtbaar is op fok!..

Maar het werkt dus nog steeds niet, nog een ander idee hoe ik twee maanden kan toevoegen? Misschien een andere functie ipv DateAdd?
Nope, ik doe niet aan Access (het is ook wat offtopic voor dit topic overigens).
In theory there is no difference between theory and practice. In practice there is.
pi_150727320
quote:
0s.gif Op dinsdag 17 maart 2015 10:02 schreef slacker_nl het volgende:

[..]

Nope, ik doe niet aan Access (het is ook wat offtopic voor dit topic overigens).
Jammer! Nee dat begreep ik al, maar aangezien dit het dichtst in de buurt komt qua topic wat er al is, dacht ik ik vraag het maar gewoon even, voor hetzelfde geld had iemand het wel geweten ;)
pi_150733619
quote:
14s.gif Op zondag 15 maart 2015 16:14 schreef Tijn het volgende:

[..]

Nee hoor, in Javascript is het ook geen probleem.
[ code verwijderd ]

Dit werkt gewoon :)
Heb hier eerder ook een issue mee gehad, oudere versies van IE vinden het niet leuk, nieuwere vallen hier niet over.
Trailing comma is recent in JS toegestaan als ik het goed is.


Edit: ok, spuit elf met een late reactie :@

[ Bericht 8% gewijzigd door Darkomen op 17-03-2015 14:06:06 ]
pi_150733818
quote:
0s.gif Op dinsdag 17 maart 2015 09:57 schreef Crohnjurist het volgende:

[..]

Nee, sorry, ik had die spaties alleen hier toegevoegd, omdat het anders niet zichtbaar is op fok!..

Maar het werkt dus nog steeds niet, nog een ander idee hoe ik twee maanden kan toevoegen? Misschien een andere functie ipv DateAdd?
Moeten het niet single quotes zijn voor de maand aanduiding, dus 'm' in plaats van "m"?
Verder neem ik aan dat je een veld genaamd Date hebt en dat daar altijd een geldige datumwaarde in zit?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150734108
quote:
0s.gif Op dinsdag 17 maart 2015 10:03 schreef Crohnjurist het volgende:

[..]

Jammer! Nee dat begreep ik al, maar aangezien dit het dichtst in de buurt komt qua topic wat er al is, dacht ik ik vraag het maar gewoon even, voor hetzelfde geld had iemand het wel geweten ;)
Mwah, t is wel redelijk specifieke access syntax waar je problemen mee hebt. Ik zou een topic openen of kijken of het in een algemeen MS Office topic kan (als die er is)
pi_150734505
quote:
0s.gif Op dinsdag 17 maart 2015 13:51 schreef Monolith het volgende:

[..]

Moeten het niet single quotes zijn voor de maand aanduiding, dus 'm' in plaats van "m"?
Verder neem ik aan dat je een veld genaamd Date hebt en dat daar altijd een geldige datumwaarde in zit?
Mmm ik denk dat dat het probleem is, het veld genaamd Date is niet altijd ingevuld. Maar voor de dossiers die wel ingevuld zijn probeer ik dus twee maanden erbij te krijgen. Dit is dus niet mogelijk?
pi_150735010
quote:
0s.gif Op dinsdag 17 maart 2015 14:11 schreef Crohnjurist het volgende:

[..]

Mmm ik denk dat dat het probleem is, het veld genaamd Date is niet altijd ingevuld. Maar voor de dossiers die wel ingevuld zijn probeer ik dus twee maanden erbij te krijgen. Dit is dus niet mogelijk?
Je kunt vast een 'doe dit alleen als het veld niet leeg is' constructie hanteren, maar ik heb echt al meer dan 10 jaar niets met Access gedaan, dus dat zou ik niet direct weten.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150735451
quote:
0s.gif Op dinsdag 17 maart 2015 14:29 schreef Monolith het volgende:

[..]

Je kunt vast een 'doe dit alleen als het veld niet leeg is' constructie hanteren, maar ik heb echt al meer dan 10 jaar niets met Access gedaan, dus dat zou ik niet direct weten.
Haha oké, in ieder geval bedankt tot zover!
  woensdag 18 maart 2015 @ 12:46:13 #189
230788 n8n
Pragmatisch
pi_150770207
werkt zoiets met php (en zo ja, wat is de juiste markup)?

$var = ( isset( $this-when-true ) : $or-else );
Specialization is for insects”.—Robert Heinlein
pi_150770324
quote:
7s.gif Op woensdag 18 maart 2015 12:46 schreef n8n het volgende:
werkt zoiets met php (en zo ja, wat is de juiste markup)?

$var = ( isset( $this-when-true ) : $or-else );
1$var = ( isset($test-variable) ? $this-when-true : $or-else );
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
  woensdag 18 maart 2015 @ 12:57:06 #191
230788 n8n
Pragmatisch
pi_150770592
quote:
0s.gif Op woensdag 18 maart 2015 12:49 schreef Rockfire het volgende:

[..]
[ code verwijderd ]

$var = ( isset($this-when-true) ? $this-when-true : $or-else );

Zou zo zijn dan, is ook wat ik nu heb, ik hoopte dat het nog korter (droger) kon omdat ik het zo zinloos vind om eerst te checken of iets bestaat en dan apart de inhoud toe te wijzen. Mooier zou zijn als je $var = ( $this-when-true || false ); kon doen zonder dat php over z'n nek gaat omdat de variable niet bestaat.

Bedankt in elk geval, mysterie opgelost, kan ik weer verder
Specialization is for insects”.—Robert Heinlein
pi_150771378
quote:
14s.gif Op woensdag 18 maart 2015 12:57 schreef n8n het volgende:

[..]

$var = ( isset($this-when-true) ? $this-when-true : $or-else );

Zou zo zijn dan, is ook wat ik nu heb, ik hoopte dat het nog korter (droger) kon omdat ik het zo zinloos vind om eerst te checken of iets bestaat en dan apart de inhoud toe te wijzen. Mooier zou zijn als je $var = ( $this-when-true || false ); kon doen zonder dat php over z'n nek gaat omdat de variable niet bestaat.

Bedankt in elk geval, mysterie opgelost, kan ik weer verder
Veel korter dan een ternary operator krijg je een if-then-else statement niet. 'this-when-true' slaat ook niet ergens op. Wat je eigenlijk wilt is een 'default-if-null'-constructie.
Als je dat echt kort wilt, dan maak je er toch gewoon een functie van, zodat je $var = defaultIfNotSet(originalValue, defaultValue) kan hanteren?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 maart 2015 @ 13:30:23 #193
91039 mstx
2x1/2 = 1/2 x 1/2
pi_150771693
quote:
0s.gif Op woensdag 18 maart 2015 13:21 schreef Monolith het volgende:
Als je dat echt kort wilt, dan maak je er toch gewoon een functie van, zodat je $var = defaultIfNotSet(originalValue, defaultValue) kan hanteren?
Volgens mij krijg je dan alsnog een notice als je een niet-gedefinieerde variabele aan die functie meegeeft.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_150772003
quote:
0s.gif Op woensdag 18 maart 2015 13:30 schreef mstx het volgende:

[..]

Volgens mij krijg je dan alsnog een notice als je een niet-gedefinieerde variabele aan die functie meegeeft.
Dat wel ja, maar ik weet niet of het erg is.
Het geeft wel weer aan hoe enorm slecht PHP in elkaar steekt. :')
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 maart 2015 @ 13:42:15 #195
91039 mstx
2x1/2 = 1/2 x 1/2
pi_150772134
quote:
0s.gif Op woensdag 18 maart 2015 13:38 schreef Monolith het volgende:

[..]

Dat wel ja, maar ik weet niet of het erg is.
Het geeft wel weer aan hoe enorm slecht PHP in elkaar steekt. :')
Wat is er precies slecht aan?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_150772462
quote:
0s.gif Op woensdag 18 maart 2015 13:42 schreef mstx het volgende:

[..]

Wat is er precies slecht aan?
Het feit dat isset een functie is als elke andere. Echter, impliciet zit erin verborgen dat een notice wordt onderdrukt op het moment dat je een ongedefinieerde variabele als parameter aan deze specifieke functie meegeeft. Als je dit per se op deze manier wilt doen, dan moet je er een language construct van maken, geen functie met verborgen bij-effecten.
Ik ben sowieso al geen voorstander van het idee dat je variabelen kunt hanteren zonder dat je überhaupt weet of ze gedeclareerd zijn (los van de vraag of ze een waarde hebben), maar dat is een langslepend gevolg van het feit dat PHP van oorsprong een simpel scripttaaltje was met allerlei brakke globals.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150773344
Vanaf PHP 5.3 kun je ook gebruiken:
$var = $this-when-true ?: $or-else;


[ Bericht 33% gewijzigd door Aether op 18-03-2015 14:14:18 ]
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_150773500
quote:
0s.gif Op woensdag 18 maart 2015 13:49 schreef Monolith het volgende:

[..]

Het feit dat isset een functie is als elke andere. Echter, impliciet zit erin verborgen dat een notice wordt onderdrukt op het moment dat je een ongedefinieerde variabele als parameter aan deze specifieke functie meegeeft. Als je dit per se op deze manier wilt doen, dan moet je er een language construct van maken, geen functie met verborgen bij-effecten.
Ik ben sowieso al geen voorstander van het idee dat je variabelen kunt hanteren zonder dat je überhaupt weet of ze gedeclareerd zijn (los van de vraag of ze een waarde hebben), maar dat is een langslepend gevolg van het feit dat PHP van oorsprong een simpel scripttaaltje was met allerlei brakke globals.
:? Isset() ķs een language construct.
pi_150773908
quote:
1s.gif Op woensdag 18 maart 2015 14:12 schreef KomtTijd... het volgende:

[..]

:? Isset() ķs een language construct.
Oh ja, dat klopt. Het staat alleen in de docs onder 'variable handling function'.
Maar dan nog is het feit dat er een notice is voor het gebruik van niet gedefinieerde variabelen, die enkel wordt onderdrukt in dit soort constructs of als expliciet @$var in de defaultIfNotSet call natuurlijk.

[ Bericht 14% gewijzigd door Monolith op 18-03-2015 14:31:42 ]
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 maart 2015 @ 14:40:01 #200
12221 Tijn
Powered by MS Paint
pi_150774507
quote:
0s.gif Op woensdag 18 maart 2015 14:23 schreef Monolith het volgende:

[..]

Maar dan nog is het feit dat er een notice is voor het gebruik van niet gedefinieerde variabelen
Dat is erg? :?
pi_150774686
quote:
5s.gif Op woensdag 18 maart 2015 14:40 schreef Tijn het volgende:

[..]

Dat is erg? :?
Je quote de halve zin, maar ook een notice bij een niet gedefinieerde variabele is echt een oplossing van niets. Of je geeft een exception / error of niet. Nu heb je dus afhankelijk van het niveau van error_reporting onverwachte bij-effecten. Het feit dat je dan weer met een @ operator die notice moet gaan onderdrukken maakt het nog erger.
Het is zoals ik al aangaf het gevolg van het feit dat PHP van scripttaaltje met een brakke globale scope is geėvolueerd tot iets wat op een volwaardige OO taal moet lijken, maar dat neemt niet weg dat het nou niet bepaald een wenselijke oplossing is.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 maart 2015 @ 14:58:03 #202
12221 Tijn
Powered by MS Paint
pi_150775018
Natuurlijk heb je helemaal gelijk dat PHP geen doordacht design heeft en in de loop der jaren enorm uit de kluiten is gegroeid, zonder dat dat aanvankelijk voorzien was. Maar ik vind niet dat er wat betreft ongedefinieerde variabelen nou echt zoveel mis is.

Je zegt het zelf al: geef als taal een error of niet. Nou, in het geval van PHP is het antwoord duidelijk: het gebruik van een ongedefinieerde variabele is geen enkel probleem. Dat je er een notice over krijgt, is een poging van PHP om hun gebruikers een beetje op te voeden, dat is alles. Maar daar heeft toch niemand last van verder?
pi_150775875
quote:
14s.gif Op woensdag 18 maart 2015 14:58 schreef Tijn het volgende:
Natuurlijk heb je helemaal gelijk dat PHP geen doordacht design heeft en in de loop der jaren enorm uit de kluiten is gegroeid, zonder dat dat aanvankelijk voorzien was. Maar ik vind niet dat er wat betreft ongedefinieerde variabelen nou echt zoveel mis is.

Je zegt het zelf al: geef als taal een error of niet. Nou, in het geval van PHP is het antwoord duidelijk: het gebruik van een ongedefinieerde variabele is geen enkel probleem. Dat je er een notice over krijgt, is een poging van PHP om hun gebruikers een beetje op te voeden, dat is alles. Maar daar heeft toch niemand last van verder?
Van notices hebben mensen wel degelijk last. Zoals ik zeg is dat een bij-effect. Zeker wanneer mensen de code gebruiken in HTML, kunnen de gebruikers het te zien krijgen, wat doorgaans niet wenselijk is. Wanneer je met gecompileerde talen werkt zijn warnings / notices niet zo'n probleem. Prima te hanteren wanneer er bijvoorbeeld deprecated zaken worden gehanteerd. Runtime allerhande notices gaan uitspugen is nooit wenselijk.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  woensdag 18 maart 2015 @ 15:28:34 #204
12221 Tijn
Powered by MS Paint
pi_150776064
Gebruikers kunnen het alleen te zien krijgen als je display_errors aan hebt staan, wat je sowieso niet moet doen in een productieomgeving. Standaard is PHP niet zo geconfigureerd dat errors (laat staan notices) worden weergegeven, die worden alleen gelogd.
  donderdag 19 maart 2015 @ 09:26:26 #205
230788 n8n
Pragmatisch
pi_150803348
Mooi die discussie met extra informatie die dan naar boven komt drijven. Vaak veel waardevoller dan stackoverflow.

Php heeft dus gewoon een $var autoloader nodig :+

Het ging hier trouwens om een $_GET return dus ik zet de return waarde wel naar false als deze niet bestaat (want dat zou moeten werken)
Specialization is for insects”.—Robert Heinlein
  donderdag 19 maart 2015 @ 09:43:28 #206
230788 n8n
Pragmatisch
pi_150803763
Andere vraag qua design: Ik heb een database met alleen content, ik wil bij het openen van een pagina alle _GET['key']'s vergelijken met alle tables’ in die database.

tables: 'page', 'item', 'section', deze zet ik in een array ($table). Ik loop over de array en zeg dan
1
2
3
<?php
( isset($_GET[$table[$i]) ? $$table[$i] = new data($table[$i]) : false );
?>

'data' is een class die alle content van de table in een array zet. Wat ik dan heb is een soort table autoloader: kijk of de table relevant is voor deze pagina, table wordt geladen. Is het verstandig om hele tabellen virtueel in php te gooien? Het aantal records blijft erg minimaal. Dan heb ik dus automatisch per table een nieuwe instance van m'n data class waarin ik dan weer take, trim, get, when, unless, etc... methods in kan zetten.

Bijvoorbeeld:
1
2
3
<?php
$page
->when('published')->take(-4); // laatste 4 gepubliceerde items van deze pagina
?>


[ Bericht 25% gewijzigd door n8n op 19-03-2015 10:06:16 ]
Specialization is for insects”.—Robert Heinlein
pi_150805025
Dat kun je toch veel beter in je query afhandelen? Dit lijkt me performance-wise niet bepaald optimaal. En als je tabellen wat groter worden ga je geheid uit je geheugen limiet lopen.
  donderdag 19 maart 2015 @ 10:44:40 #208
230788 n8n
Pragmatisch
pi_150805189
quote:
5s.gif Op donderdag 19 maart 2015 10:36 schreef KomtTijd... het volgende:
Dat kun je toch veel beter in je query afhandelen? Dit lijkt me performance-wise niet bepaald optimaal. En als je tabellen wat groter worden ga je geheid uit je geheugen limiet lopen.
Ik kijk eerst of de table-name (mogelijk met een hard-coded/cached array) een match heeft met de url, als dat waar ik is pak ik de tabel met een query en hang deze aan een nieuwe instance van mn data class. de waarde van de get-key gebruik ik om de query te limiteren voor wat relevant is aan die pagina.

dus /?page=home wordt dan iets als: select * from 'page' where key 'home'. Dat valt toch wel mee? :@

Op die pagina heb ik dan automatisch een $page class waar alle data in staat die ik in de template dan weer kan benaderen/uitspugen met methods: $page->html('title'); // extract and parse title for this page

Heb dat afgekeken van http://getkirby.com, de site wordt ook niet groot (en gaat ook niet bijster veel groeien).
Specialization is for insects”.—Robert Heinlein
pi_150805377
Riep daar iemand SQL injection? :P
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150805416
Je bent dus min of meer je eigen ORM aan het uitvinden? Daar is op zich niets mis mee nee.
pi_150805464
quote:
0s.gif Op donderdag 19 maart 2015 10:53 schreef Monolith het volgende:
Riep daar iemand SQL injection? :P
riep daar iemand prepared statements? :O
  donderdag 19 maart 2015 @ 10:57:05 #212
230788 n8n
Pragmatisch
pi_150805471
quote:
14s.gif Op donderdag 19 maart 2015 10:54 schreef KomtTijd... het volgende:
Je bent dus min of meer je eigen ORM aan het uitvinden? Daar is op zich niets mis mee nee.
Dat bewijst zonder dat ik weet wat dat is, de noodzaak voor een ORM (8>

Injecteren? Er gaat niks via deze weg 'omhoog', de data die losgetrokken kan worden is al openbaar. Verder nog hiaten waar ik geen idee van heb? Weet alleen dat ik PDO moet gebruiken en ALLES moet valideren wat omhoog gaat.
Specialization is for insects”.—Robert Heinlein
pi_150805536
quote:
1s.gif Op donderdag 19 maart 2015 10:56 schreef KomtTijd... het volgende:

[..]

riep daar iemand prepared statements? :O
Natuurlijk, maar lijkt me relevant dat hij daar even rekening mee houdt.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
pi_150805625
quote:
7s.gif Op donderdag 19 maart 2015 10:57 schreef n8n het volgende:

[..]

Dat bewijst zonder dat ik weet wat dat is, de noodzaak voor een ORM (8>

Injecteren? Er gaat niks via deze weg 'omhoog', de data die losgetrokken kan worden is al openbaar. Verder nog hiaten waar ik geen idee van heb? Weet alleen dat ik PDO moet gebruiken en ALLES moet valideren wat omhoog gaat.
SQL injectie kan met iedere query waar user input in staat. Ook met select queries. Daarom nooit user input direct in je query verwerken.

En kijk ook eens naar bestaande ORM libs, zoals doctrine of redbean.
  donderdag 19 maart 2015 @ 11:06:34 #215
230788 n8n
Pragmatisch
pi_150805737
quote:
1s.gif Op donderdag 19 maart 2015 11:02 schreef KomtTijd... het volgende:

[..]

SQL injectie kan met iedere query waar user input in staat. Ook met select queries. Daarom nooit user input direct in je query verwerken.

En kijk ook eens naar bestaande ORM libs, zoals doctrine of redbean.
user input zoals een get varible zoals /?page=malafide-code. Dat vang je af met pdo/prepared statements?

Nu ik weet wat/dat een orm is zal ik even naar best practice voorbeelden kijken ja. Jammere vind ik wel altijd dat voorbeelden vaak enorm de diepte in gaan met alle mogelijke randvoorwaarden terwijl ik het juist basic wil houden (al is veiligheid uiteraard basic)
Specialization is for insects”.—Robert Heinlein
pi_150806481
quote:
1s.gif Op donderdag 19 maart 2015 11:06 schreef n8n het volgende:

[..]

user input zoals een get varible zoals /?page=malafide-code. Dat vang je af met pdo/prepared statements?
Klopt. Enige punt is dat je in jouw geval moet uitkijken voor /?malafide-code=waarde aangezien je ook min of meer dynamische tabelnamen wilt hebben op basis van de naam van request parameters. Gelukkig gebruik je de tabel en niet de request parameter daarvoor, dus dat moet goed gaan, maar het is wel iets waar je mee moet uitkijken. Helemaal omdat tabelnamen niet middels prepared statements in een query kunnen worden gestopt, dus daar ben je zelf verantwoordelijk voor het voorkomen van SQL injection.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  donderdag 19 maart 2015 @ 11:47:30 #217
230788 n8n
Pragmatisch
pi_150806935
quote:
0s.gif Op donderdag 19 maart 2015 11:32 schreef Monolith het volgende:

[..]

Klopt. Enige punt is dat je in jouw geval moet uitkijken voor /?malafide-code=waarde aangezien je ook min of meer dynamische tabelnamen wilt hebben op basis van de naam van request parameters. Gelukkig gebruik je de tabel en niet de request parameter daarvoor, dus dat moet goed gaan, maar het is wel iets waar je mee moet uitkijken. Helemaal omdat tabelnamen niet middels prepared statements in een query kunnen worden gestopt, dus daar ben je zelf verantwoordelijk voor het voorkomen van SQL injection.
de table names zet ik in een var:
1
2
3
4
<?php
$tables 
"show tables from $db"//of 
$tables = ['table1''table2'];
?>
Dit zijn dan de enige namen die in een statement voor zouden moeten kunnen komen omdat ik daarover m'n loop draai, die checkt of er een match is met de get-key. De get-waarde van die key moet ik dus valideren. op /?malafide-code zou nooit een match kunnen zijn omdat deze 'string' niet in $tables voorkomt (theoretisch).

[ Bericht 12% gewijzigd door n8n op 19-03-2015 11:53:19 ]
Specialization is for insects”.—Robert Heinlein
  donderdag 19 maart 2015 @ 18:27:45 #218
230788 n8n
Pragmatisch
pi_150819717
Code op 40 manieren gerefactored voordat ik bedacht dat je in php de global scope moet definiėren. Aaaaarggh :'(
Specialization is for insects”.—Robert Heinlein
  donderdag 19 maart 2015 @ 20:39:33 #219
187069 slacker_nl
Sicko pur sang
pi_150824582
quote:
0s.gif Op woensdag 18 maart 2015 13:21 schreef Monolith het volgende:

[..]

Veel korter dan een ternary operator krijg je een if-then-else statement niet. 'this-when-true' slaat ook niet ergens op. Wat je eigenlijk wilt is een 'default-if-null'-constructie.
Als je dat echt kort wilt, dan maak je er toch gewoon een functie van, zodat je $var = defaultIfNotSet(originalValue, defaultValue) kan hanteren?
Ow perl *;
1
2
3
4
 
$foo //= "bar" ; 
# is hetzelfde als 
$foo = defined $foo ? $foo : "bar" ; 
In theory there is no difference between theory and practice. In practice there is.
  donderdag 19 maart 2015 @ 23:06:08 #220
230788 n8n
Pragmatisch
pi_150831276
quote:
0s.gif Op donderdag 19 maart 2015 20:39 schreef slacker_nl het volgende:

[..]

Ow perl *;
[ code verwijderd ]

_O_

Al waardeer ik php een stuk beter nu ik redelijk met classes weet om te gaan. Next up: een pdo mysql controller en een simpele autoloader.
Specialization is for insects”.—Robert Heinlein
pi_150879900
quote:
0s.gif Op woensdag 18 maart 2015 13:21 schreef Monolith het volgende:

[..]

Veel korter dan een ternary operator krijg je een if-then-else statement niet. 'this-when-true' slaat ook niet ergens op. Wat je eigenlijk wilt is een 'default-if-null'-constructie.
Als je dat echt kort wilt, dan maak je er toch gewoon een functie van, zodat je $var = defaultIfNotSet(originalValue, defaultValue) kan hanteren?
:P In php 7

1$eenVariabele =  $dezeWaardeAlsHijBestaat ?? $andersDit;
pi_150895166
quote:
19s.gif Op zaterdag 21 maart 2015 12:49 schreef TwenteFC het volgende:

[..]

:P In php 7
[ code verwijderd ]

Je kan PHP 7 al uitproberen dan? De meest recente versie die gebruikt kan worden, is bij ons nog steeds PHP 5.6
pi_150900625
quote:
1s.gif Op zaterdag 21 maart 2015 22:05 schreef Robuustheid het volgende:

[..]

Je kan PHP 7 al uitproberen dan? De meest recente versie die gebruikt kan worden, is bij ons nog steeds PHP 5.6
Dat hoeft toch niet perse? Specs kunnen al lang voor enige release bekend zijn. Maar volgens mij wordt er al best lang gesleuteld aan php7 dus je kunt vast wel ergens een dev build vandaan halen als je zou willen.
pi_150932443
Yep, maar ik ga wel vanuit dat TwenteFC niet daar al mee loopt te klooien. Want dat PHP 7 is nog vrij buggy en vooral voorbehouden aan ontwikkelaars die contributies doen aan de PHP community.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')