1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php /** * Zorgt ervoor dat de key van de array items een van de values($flipKey) van de objecten in de array($toFlip) wordt * * @param array $toFlip array met objecten * @param string $flipKey key in object * @return array */ function flipObjectArray($toFlip, $flipKey) { $ret = array(); foreach ($toFlip as $k => $v) { $ret[$v->{$flipKey}] = $v; } return $ret; } ?> |
In de objecten zitten unieke md5 keys ipv een gewone index die ik van de CouchDB terug krijg. Op deze manier heb ik een array met keys die ik gewoon kan gebruiken voor diverse dingen.quote:Op dinsdag 8 april 2014 12:23 schreef totalvamp het volgende:
Ook even een test toevoegen of je $flipKey wel bestaat in het object.
Maar ik neem aan dat je dit doet omdat je wilt sorteren? Anders zie ik sowieso niet echt het nut in van deze functie.
Je weet dat je Objecten kunt behandelen als arrays? Dan hoef je ze niet eens om te zetten ^^.quote:Op dinsdag 8 april 2014 12:55 schreef Sitethief het volgende:
[..]
In de objecten zitten unieke md5 keys ipv een gewone index die ik van de CouchDB terug krijg. Op deze manier heb ik een array met keys die ik gewoon kan gebruiken voor diverse dingen.
Sorteren kan CouchDB gewoon voor mij doen btw.
Hij heeft de array in zich die geflipt moet worden? $flipArray dan misschien? Het is een globale functie die overal en nergens ingezet moet kunnen worden in principe.quote:Op dinsdag 8 april 2014 12:06 schreef boem-dikkie het volgende:
Ik ben er zelf sowieso van om variabelen te gebruiken die beschrijven wat ze in zich hebben. $toFlip is natuurlijk onduidelijk als de pest, en dat je er een comment blok bij zet die zegt dat je $toFlip een array met objecten is helpt ook vrij weinig.
Maar dat is kwestie van smaak.
Ik zet niks om? Maar hoe bedoel je?quote:Op dinsdag 8 april 2014 12:56 schreef totalvamp het volgende:
[..]
Je weet dat je Objecten kunt behandelen als arrays? Dan hoef je ze niet eens om te zetten ^^.
1 2 3 4 5 6 7 8 9 10 | <?php Array ( [0] => stdClass Object ( [id] => 106434159d04626babfa1f4c81d3d0b2 [value] => .... ) } ?> |
Nouja je zet het nu dus om van dat naar dit?quote:Op dinsdag 8 april 2014 13:04 schreef Sitethief het volgende:
[..]
Ik zet niks om? Maar hoe bedoel je?
Dit zijn de soort arrays die die functie moet omzetten.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 | <?php Array ( [106434159d04626babfa1f4c81d3d0b2] => stdClass Object ( [id] => 106434159d04626babfa1f4c81d3d0b2 [value] => .... ) } ?> |
Klopt. Is er een betere methode? Dit was het beste wat ik zelf kon bedenken.quote:Op dinsdag 8 april 2014 13:13 schreef totalvamp het volgende:
[..]
Nouja je zet het nu dus om van dat naar dit?
[ code verwijderd ]
Nouja wat is er mis met de waarde direct uit het object aanroepen? Welke probleem moet dit een oplossing voor zijn?quote:Op dinsdag 8 april 2014 13:15 schreef Sitethief het volgende:
[..]
Klopt. Is er een betere methode? Dit was het beste wat ik zelf kon bedenken.
1 2 3 4 5 6 7 | <?php $lengthArray = count($data); for($i=0;$i<$lengthArray;$i++) { $id = $data[$i]->id; $id = $data[$i]['id']; } ?> |
Omdat ik die array op meerdere plekken binnen een class nodig heb voor het opbouwen van verschillende dingen deels gebaseerd op dat ID, ik wil er dan niet iedere keer doorheen loopen of zoeken maar gewoon de key kunnen gebruiken om de juiste data te selecteren.quote:Op dinsdag 8 april 2014 13:18 schreef totalvamp het volgende:
[..]
Nouja wat is er mis met de waarde direct uit het object aanroepen? Welke probleem moet dit een oplossing voor zijn?
Nu heb je bijvoorbeeld:
[ code verwijderd ]
Dus sowieso al toegang daartoe.
Heb je voorbeelden? Ik neem aan dat je voor veel dingen maar 1 van de objecten nodig hebt voor data?quote:Op dinsdag 8 april 2014 13:23 schreef Sitethief het volgende:
[..]
Omdat ik die array op meerdere plekken binnen een class nodig heb voor het opbouwen van verschillende dingen deels gebaseerd op dat ID, ik wil er dan niet iedere keer doorheen loopen of zoeken maar gewoon de key kunnen gebruiken om de juiste data te selecteren.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class Foo { private $data = array(); public function remove($id) { unset($this->data[$id]); } public function check($id) { check($this->data[$id]); } } ?> |
Inderdaad, maar ook complexere dingen, zoals kijken of bepaalde gebruikers recht hebben op de data erin gebaseerd op de context, lijsten in HTML bouwen van data uit value met andere items op ID eraan gelinked etc. Dit is stukken makkelijker als ik alle items gewoon op ID kan vinden.quote:Op dinsdag 8 april 2014 13:27 schreef totalvamp het volgende:
[..]
Heb je voorbeelden? Ik neem aan dat je voor veel dingen maar 1 van de objecten nodig hebt voor data?
Even een klein voorbeeld van hoe ik er nu van uitga dat je het nodig hebt
[ code verwijderd ]
Inderdaad, al zou ik het zelf anders hebben gedaan (niet persee beter, maar anders, waarschijnlijk meer resources uiteindelijk).quote:Op dinsdag 8 april 2014 13:36 schreef Sitethief het volgende:
[..]
Inderdaad, maar ook complexere dingen, zoals kijken of bepaalde gebruikers recht hebben op de data erin gebaseerd op de context, lijsten in HTML bouwen van data uit value met andere items op ID eraan gelinked etc. Dit is stukken makkelijker als ik alle items gewoon op ID kan vinden.
Het verschil is snelheid is er nauwelijks momenteel bij mijn kleine testcase, maar hoe meer er in de array zit hoe meer foreach volgens mij aan geheugen kost omdat die een kopie van de array maakt, dan is for volgens mij gewoon beter, ook omdat de keys altijd een index zijn.quote:Op dinsdag 8 april 2014 13:42 schreef totalvamp het volgende:
[..]
Inderdaad, al zou ik het zelf anders hebben gedaan (niet persee beter, maar anders, waarschijnlijk meer resources uiteindelijk).
In dat geval is je huidige code (op wat checks na) gewoon goed en moet je zelf even testen of je for of foreach gebruikt.
Bij je foreach kun je $k weghalen aangezien je die niet gebruikt.
Doe een foreach by reference.quote:Op dinsdag 8 april 2014 13:44 schreef Sitethief het volgende:
[..]
Het verschil is snelheid is er nauwelijks momenteel bij mijn kleine testcase, maar hoe meer er in de array zit hoe meer foreach volgens mij aan geheugen kost omdat die een kopie van de array maakt, dan is for volgens mij gewoon beter, ook omdat de keys altijd een index zijn.
Ik vind reference altijd een redelijk lastig concept , dus ik denk dat ik het bij de for loop houd voor nu.quote:Op dinsdag 8 april 2014 13:48 schreef totalvamp het volgende:
[..]
Doe een foreach by reference.
Nadeel van for is de count($array), hier maakt hij ook een kopie bij aan. en bij de foreach dus niet.
Hoezo lastig? je hoeft er alleen een & voor te zettenquote:Op dinsdag 8 april 2014 14:25 schreef Sitethief het volgende:
[..]
Ik vind reference altijd een redelijk lastig concept , dus ik denk dat ik het bij de for loop houd voor nu.
Ik kijk er dan twee weken later over heen dat er & staat als ik die functie ga gebruiken en rare dingen zie gebeuren . Goed documenteren dus .quote:Op dinsdag 8 april 2014 14:32 schreef totalvamp het volgende:
[..]
Hoezo lastig? je hoeft er alleen een & voor te zetten
Ja je moet wel oppassen met referentiesquote:Op dinsdag 8 april 2014 14:35 schreef Sitethief het volgende:
[..]
Ik kijk er dan twee weken later over heen dat er & staat als ik die functie ga gebruiken en rare dingen zie gebeuren . Goed documenteren dus .
Oh boy , ik had al een keertje een ArrayIterator gebruikt ergens. Heap klinkt erg interessant voor een aantal dingen die ik wil doen .quote:Op dinsdag 8 april 2014 14:40 schreef totalvamp het volgende:
[..]
Ja je moet wel oppassen met referenties
Als je echt veel data gaat gebruiken zou ik adviseren dit even door te lezen:
http://matthewturland.com/2010/05/20/new-spl-features-in-php-5-3/
Ja staat leuke info bij wel wat hoger niveau, maar juist leuk om nieuwe dingen te leren.quote:Op dinsdag 8 april 2014 14:47 schreef Sitethief het volgende:
[..]
Oh boy , ik had al een keertje een ArrayIterator gebruikt ergens. Heap klinkt erg interessant voor een aantal dingen die ik wil doen .
quote:Op donderdag 10 april 2014 00:02 schreef xaban06 het volgende:
Ik ben bezig met een project om mijn slimme meter uit te lezen en maak hier vervolgens een grafiek van.
Ik krijg de resultaten te zien als:
0000.00
Dus 0000.38 is 380 Watt
Dus 0012.21 is 12210 Watt
Met welke PHP kan je deze getallen omzetten?
1 2 3 | <?php echo '0000.38' * 1000; ?> |
Het is basis wiskundequote:
quote:Op donderdag 10 april 2014 00:17 schreef totalvamp het volgende:
[..]
Het is basis wiskunde
daarnaast staat er een fout in de code van light. Getallen zijn niet met quotes.
Je kunt gebruik maken van DateTime object. Of gewoon 2 uur toevoegen aan de tijd.quote:Op donderdag 10 april 2014 00:18 schreef xaban06 het volgende:
[..]
[ afbeelding ]
Huidig verbruik in Watt Alleen klopt de tijd niet op de server zie ik net, loopt 2 uur achter
Ik ga zo ntp installeren, tijd moet gewoon kloppen op de serverquote:Op donderdag 10 april 2014 00:21 schreef totalvamp het volgende:
[..]
Je kunt gebruik maken van DateTime object. Of gewoon 2 uur toevoegen aan de tijd.
Misschien klopt het wel, in welke tijdszone staat de server?quote:Op donderdag 10 april 2014 00:22 schreef xaban06 het volgende:
[..]
Ik ga zo ntp installeren, tijd moet gewoon kloppen op de server
In de meterkast Draait op een Raspberry Pi. Zo eens de tijdzone checken.quote:Op donderdag 10 april 2014 00:23 schreef totalvamp het volgende:
[..]
Misschien klopt het wel, in welke tijdszone staat de server?
je kunt in php de tijdszone zetten,mocht je dat ooit willenquote:Op donderdag 10 april 2014 00:24 schreef xaban06 het volgende:
[..]
In de meterkast Draait op een Raspberry Pi. Zo eens de tijdzone checken.
1 2 3 | <?php date_default_timezone_set('Europe/Amsterdam'); ?> |
Cool.quote:Op donderdag 10 april 2014 00:26 schreef totalvamp het volgende:
[..]
je kunt in php de tijdszone zetten,mocht je dat ooit willen
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | pi@raspberrypi ~/php $ sudo dpkg-reconfigure tzdata Current default time zone: 'Europe/Amsterdam' Local time is now: Thu Apr 10 00:26:25 CEST 2014. Universal Time is now: Wed Apr 9 22:26:25 UTC 2014. pi@raspberrypi ~/php $ date +%Z CEST pi@raspberrypi ~/php $ uptime 00:26:38 up 1:00, 2 users, load average: 0.33, 0.19, 0.16 pi@raspberrypi ~/php $ |
Maar als je ze vanaf een externe bron inleest, zijn het meestal wel strings.quote:Op donderdag 10 april 2014 00:17 schreef totalvamp het volgende:
[..]
Het is basis wiskunde
daarnaast staat er een fout in de code van light. Getallen zijn niet met quotes.
Ik neem aan dat deze post over mijn posts gaat .quote:Op donderdag 10 april 2014 07:04 schreef slacker_nl het volgende:
In PHP zijn references raar.
PHP gebruikt copy on write, dus je passed altijd een ref naar een functie, dus in je foreach/for loop heb je alleen maar refs, tenzij je de waardes van de array waarin je loopt aanpast. Als je kan, wilt, gebruik cursors om je data op te halen.
Je zou maar zo'n bug moeten vinden in een bestand met meer dan 2000 regels niet OO code heb ik een keer mee mogen maken.quote:Op donderdag 10 april 2014 10:58 schreef Sitethief het volgende:
[..]
Ik neem aan dat deze post over mijn posts gaat .
Ik kwam er ook achter dat je naderhand de waardes in de foreach moet unsetten als je de array gereferenced hebt , anders gebeuren er soms rare dingen.
Ja, zat mobiel en geen zin om te quotenquote:Op donderdag 10 april 2014 10:58 schreef Sitethief het volgende:
[..]
Ik neem aan dat deze post over mijn posts gaat .
Ik kwam er ook achter dat je naderhand de waardes in de foreach moet unsetten als je de array gereferenced hebt , anders gebeuren er soms rare dingen.
En hoe lang is de data die je in de kolom title wilt stoppen?quote:Op donderdag 10 april 2014 18:03 schreef wipes66 het volgende:
weet iemand hoe dit kan? ik krijg steeds de volgende error: ERROR_CODE_22001 (22001) SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'title' at row 1
title is in mysql "varchar(300) utf8_unicode_ci" en ik gebruik een utf8 aware substring functie om hem te verkleinen
330, maar 200 als utf8. daarom snap ik niet waarom mysql deze error geeftquote:Op donderdag 10 april 2014 18:09 schreef Light het volgende:
[..]
En hoe lang is de data die je in de kolom title wilt stoppen?
Uit m'n hoofd weigert MySQL 5.5 data als het niet past, waar eerdere versies de data gewoon truncaten en je dat niet vertellen. Je kunt dat bij MySQL 5.5 nog wel instellen (maar de vraag is of je dat moet willen).
Inderdaad ik ook .quote:Op donderdag 10 april 2014 12:44 schreef slacker_nl het volgende:
[..]
Ja, zat mobiel en geen zin om te quoten
Volgens mij wil je niet gaan referencen in PHP. Ik heb er ooit mee lopen spelen, maar ik kreeg er hoofdpijn van.
Zoiets schreef ik 5 jaar geleden, gelukkig vandaag de dag niet meerquote:Op donderdag 10 april 2014 11:51 schreef totalvamp het volgende:
[..]
Je zou maar zo'n bug moeten vinden in een bestand met meer dan 2000 regels niet OO code heb ik een keer mee mogen maken.
ja dat is hem ik gebruik pdo en alles zit dus dubbel utf8 encoded in de database zonder dat ik het door hadquote:Op vrijdag 11 april 2014 08:52 schreef slacker_nl het volgende:
Zou het hiermee te maken hebben?
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
Nee, je stuurt er LATIN1 naartoe, dus is de lengte van je string 330.quote:Op vrijdag 11 april 2014 10:04 schreef wipes66 het volgende:
[..]
ja dat is hem ik gebruik pdo en alles zit dus dubbel utf8 encoded in de database zonder dat ik het door had
uhm? alles aan php zijde is gewoon utf8, inclusief chinese tekens. alleen pdo of mysql ging er van uit (gok ik) dat ik iso-8859 instuurde en dus werd het dubbel utf8.quote:Op vrijdag 11 april 2014 10:20 schreef slacker_nl het volgende:
[..]
Nee, je stuurt er LATIN1 naartoe, dus is de lengte van je string 330.
1 2 3 | <?php throw new Exception(serialize(array('error_id' => $error_id, 'error_vars' => $err_vars))); ?> |
Die mogelijkheid had ik al iets over gevonden, ik kwam echter niets tegen over het omzetten van de array naar een string en kon daardoor lastig een conclusie trekken wat beter zou zijn. Jij zou dus voor extenden gaan als ik het goed begrijp.quote:
Dan schrijf je toch je eigen error handler die dat wel aan kan?quote:Op dinsdag 15 april 2014 17:23 schreef bondage het volgende:
Is dit netjes om te doen?
[ code verwijderd ]
Het is namelijk niet mogelijk om een array aan een exception mee te geven en ik moet meerdere parameters aan de uiteindelijke foutmelding toe kunnen voegen.
Zo niet; is er een andere manier om dit te fixen?
Allang gedaanquote:Op woensdag 16 april 2014 12:42 schreef totalvamp het volgende:
[..]
Dan schrijf je toch je eigen error handler die dat wel aan kan?
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 | <?php class statsOutputException extends Exception { private $error_id = 0; # intern numeriek id van de fout private $error_vars = array(); # array met fout eigenschappen public function __construct($error_params, $code = 0, Exception $previous = null) { # check of het een array met waarden betreft if(is_array($error_params)) { $this->error_id = isset($error_params['id']) ? $error_params['id'] : null; $this->error_vars = (isset($error_params['vars']) && is_array($error_params['vars'])) ? $error_params['vars'] : array(); }else{ # input is string of int, handel op de normale manier af $this->error_id = $error_params; } # roep Exception contructor aan parent::__construct($this->error_id, $code, $previous); } # geeft de vars terug welke de foutcode aanvullen met eventuele extra gegevens public function getErrorVars() { return $this->error_vars; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml_version "1.0" encoding="UTF-8" ?> <message> <messageheader> <debug>false</debug> <msgtype>incoming</msgtype> <msgversion>1.0</msgversion> <msgidentifier></msgidentifier> <errorcode>0</errorcode> <errorcodedescription>ok</errorcodedescription> <msgdatetime>2014-04-18T11:02:55</msgdatetime> </messageheader> <messagebody> <clip>200</clip> <did></did> <extension>200</extension> <prefix>Roy</prefix> </messagebody> </message> |
file_get_contents("php://input") ?quote:Op vrijdag 18 april 2014 11:06 schreef wobbel het volgende:
Help ik heb weer eens iets raars nodig. Het is mij ooit al gelukt, maarja waarom zou je zoiets dan bewaren.
Vanaf een leverancier wordt er naar ons XML gepusht (dmv POST) naar http://server.tld/test.php. Dit gebeurd zonder variable naam.
[ code verwijderd ]
Hoe kan ik dit met PHP afvangen? Een foreach met alle POSTS vars blijft angstvallig leeg.
Waarom gebruik je niet gewoon Disqus zelf?quote:Op zondag 20 april 2014 23:56 schreef pascal08 het volgende:
Ik ben op zoek naar een PHP library waarmee ik een soort mini-forumpje kan maken, zonder veel poespas, zoals phpBB.
Een beetje dit idee:
[ afbeelding ]
Ik wil het gebruiken als een soort berichtenprikbord waar iedereen berichtjes op kan plaatsen. Dus geen commentsystem.
Ongeveer wel ja.quote:Op maandag 21 april 2014 09:35 schreef Swetsenegger het volgende:
Dus eigenlijk wil je een gastenboek?
Omdat daar een heel gebeuren aan vastzit wat ik helemaal niet nodig heb.quote:Op maandag 21 april 2014 09:34 schreef Tijn het volgende:
[..]
Waarom gebruik je niet gewoon Disqus zelf?
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is keesquote:Op maandag 21 april 2014 15:08 schreef pascal08 het volgende:
[..]
Omdat daar een heel gebeuren aan vastzit wat ik helemaal niet nodig heb.
Accountje aanmaken is voor veel mensen een dergelijke grote stap dat ze het maat laten zitten. Leuk voorbeeld is de case van Amazon die het account aanmaken niet meer verplicht stelde vooraf de aankoop.quote:Op maandag 21 april 2014 21:45 schreef Tijn het volgende:
[..]
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is kees
Ik bedoelde de moeite die het kost om het te installeren. Reageren kan volgens mij ook zonder account.quote:Op dinsdag 22 april 2014 09:03 schreef Maringo het volgende:
[..]
Accountje aanmaken is voor veel mensen een dergelijke grote stap dat ze het maat laten zitten. Leuk voorbeeld is de case van Amazon die het account aanmaken niet meer verplicht stelde vooraf de aankoop.
Dat is gewoon niet wat ik zoek. Ik heb zelf inmiddels al een code geschreven. Kostte uiteindelijk minder moeite dan een geschikte library vinden.quote:Op maandag 21 april 2014 21:45 schreef Tijn het volgende:
[..]
Valt wel mee toch? Gewoon een accountje maken, includen op de pagina waar je het hebben wil en klaar is kees
Ik betwijfel het, maar goed dat je voorzien bent nuquote:Op dinsdag 22 april 2014 19:51 schreef pascal08 het volgende:
[..]
Dat is gewoon niet wat ik zoek. Ik heb zelf inmiddels al een code geschreven. Kostte uiteindelijk minder moeite dan een geschikte library vinden.
Interessante praatjes zijn datquote:Op dinsdag 15 april 2014 21:26 schreef slacker_nl het volgende:
https://www.destroyallsoftware.com/talks/boundaries
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 | <?php if(!empty($resultaat["matches"])) { $current_count = 0; $topic_ids = array(); $users_topics = array(); $this->cl->resetGroupBy(); # loop over de gevonden topic-id's foreach($resultaat["matches"] as $mId => $mData) { $current_count++; $pCounts = $mData['attrs']; $topic_ids[] = $pCounts['topic_id']; # verwerk het in stukken van 32 topics zodat het max uit de volgende query nooit boven de 10.000 (max Sphinx) uitkomt met 310 posts per topic gerekend if(count($topic_ids) == 32 || ($current_count == $total_found && !empty($topic_ids))) { $this->cl->resetFilters(); $this->cl->SetFilter("topic_id", $topic_ids); $topic_ids = array(); $this->cl->SetLimits(0, 10000, 10000); $resultaat = $this->cl->Query('', $this->config['indices']); $total_query_time += $resultaat["time"]; if(!empty($resultaat["matches"])) { # loop over de teruggegeven posts en voeg de topic-id's toe aan de array welke de unieke topics per gebruiker bevat, dit wordt later dvm de count functie toegevoegd aan de lijst welke wordt weergegeven in de tool # dit stuk is erg traag en doet er enkele seconden over om een lijst van 15.000 posts te verweken (ingevoerde gebruiker heeft in dit geval in 50 topics gepost) foreach($resultaat["matches"] as $mId => $mData) { if($mData['attrs']['auteur_id'] != $auteurId) { if(!isset($users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']])) { $users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']] = 1; } } } } } } } ?> |
Bij dit stuk gaat het traag:quote:Op vrijdag 25 april 2014 23:02 schreef zoem het volgende:
Wat is precies de bottleneck? Om wat voor orde van grootte gaat het in die loops? Zegt bijv. de xdebug profiler iets zinnigs?
1 2 3 4 5 6 7 8 9 | <?php foreach($resultaat["matches"] as $mId => $mData) { if($mData['attrs']['auteur_id'] != $auteurId) { if(!isset($users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']])) { $users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']] = 1; } } } ?> |
1 2 3 4 5 6 7 8 9 | <?php foreach($resultaat["matches"] as $mId => $mData) { if($mData['attrs']['auteur_id'] != $auteurId) { if(!isset($users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']])) { $users_topics[$mData['attrs']['auteur_id']][$mData['attrs']['topic_id']] = 1; } } } ?> |
Ik denk dat in het eerste if statement met de $auteurId wordt gekeken of de post niet van degene zelf is.quote:Op zaterdag 26 april 2014 09:31 schreef Light het volgende:
[ code verwijderd ]
Hier vallen me een paar dingen op. Om te beginnen ben ik benieuwd wat er in $auteurId staat en waarom er een != wordt gebruikt voor die vergelijking. Verder heb je de isset()-check niet nodig. Je set de waarde op 1, en als die toevallig al geset was, verandert er niets. En je benadert (ook zonder isset()) $mData['attrs']['auteur_id'] meerdere keren. Niet fout, maar ik zou er een variabele van maken (en dat waarschijnlijk ook doen voor $mData['attrs']['topic_id']), al was het maar voor een betere leesbaarheid.
Kan je deze logica niet veel beter in je SQL oplossen, dat lijkt me vele malen sneller dan het oplossen in PHP.quote:Op vrijdag 25 april 2014 22:56 schreef bondage het volgende:
Het script doet het volgende:
1. Haal alle topic-id's op waar de ingevoerde gebruiker heeft gereageerd
2. Haal alle posts behorende bij de topic-id's op in delen van 32 topics, dit omdat Sphinx is ingesteld op max 10.000 resultaten
3. Loop over alle posts en voeg de bijbehorende topic-id's toe aan een array welke de unieke topic's per gebruiker gevat.
In $auteurId staat het id van de user welke de post heeft geplaatst, aangezien ik de posts van degene waar op wordt gezocht wil negeren (wat Maringo al aangaf) gebruik ik die vergelijking.quote:Op zaterdag 26 april 2014 09:31 schreef Light het volgende:
[ code verwijderd ]
Hier vallen me een paar dingen op. Om te beginnen ben ik benieuwd wat er in $auteurId staat en waarom er een != wordt gebruikt voor die vergelijking. Verder heb je de isset()-check niet nodig. Je set de waarde op 1, en als die toevallig al geset was, verandert er niets. En je benadert (ook zonder isset()) $mData['attrs']['auteur_id'] meerdere keren. Niet fout, maar ik zou er een variabele van maken (en dat waarschijnlijk ook doen voor $mData['attrs']['topic_id']), al was het maar voor een betere leesbaarheid.
Dank. Ik ga het ff aanpassen en checken of het winst oplevertquote:Op zaterdag 26 april 2014 10:36 schreef Maringo het volgende:
Mijn idee is om die eruit te halen en eventueel na de foreach loop die ene entry uit $users_topics ($users_topics[$auteurId]) te halen.
Geprobeerd, met de volgende query:quote:Op zaterdag 26 april 2014 11:55 schreef slacker_nl het volgende:
[..]
Kan je deze logica niet veel beter in je SQL oplossen, dat lijkt me vele malen sneller dan het oplossen in PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT COUNT(*), naam FROM ( SELECT fok_user.naam, `fok_post`.auteur FROM `fok_post` RIGHT JOIN ( SELECT DISTINCT topicid FROM `fok_post` WHERE `auteur` = 128465 AND `fok_post`.`tijdstip` BETWEEN UNIX_TIMESTAMP('2014-04-01 00:00:01') AND UNIX_TIMESTAMP('2014-04-26 23:59:59') AND `fok_post`.`year` = 2014 ) AS t ON (`fok_post`.topicid = t.topicid) JOIN fok_user ON `fok_post`.auteur = fok_user.id WHERE `fok_post`.auteur != 128465 GROUP BY `fok_post`.auteur, `fok_post`.topicid ) AS u GROUP BY auteur ORDER BY COUNT(*) DESC LIMIT 100 |
Ahja, je wilt een overzicht van vriendjes maken. Hoe moet ik dat zien? Een lijst van users die in dezelfde topics gepost hebben?quote:Op zaterdag 26 april 2014 16:03 schreef bondage het volgende:
[..]
In $auteurId staat het id van de user welke de post heeft geplaatst, aangezien ik de posts van degene waar op wordt gezocht wil negeren (wat Maringo al aangaf) gebruik ik die vergelijking.
Die isset is idd niet nodig, dom dat ik me dat niet eerder had gerealiseerd aangezien ik heel goed weet dat het in dit geval geen effect op de resulterende array heeft. Ik haal deze sowieso weg.
De waarden in $mData['attrs']['auteur_id'] en $mData['attrs']['topic_id'] zet ik in een variable, zelfs al levert het maar weinig op ben ik al blij.
In ieder geval heel erg bedankt voor het meedenken.
Klopt. Zo is dit mijn lijstje wat ie eens op verzoek maakte:quote:Op zaterdag 26 april 2014 16:58 schreef Light het volgende:
[..]
Ahja, je wilt een overzicht van vriendjes maken. Hoe moet ik dat zien? Een lijst van users die in dezelfde topics gepost hebben?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 142 Rezania 139 d4v1d 120 Amarantha 118 FL_Freak 118 Lt.Surge 103 SgtPorkbeans 96 LittleBrownie 96 Flippiee 95 gianni61 94 Fopje 91 BBQSausage 85 Bitterlemon 84 Snowbells 74 Roburtt 72 HeaN82 |
Exactquote:Op zaterdag 26 april 2014 16:58 schreef Light het volgende:
[..]
Ahja, je wilt een overzicht van vriendjes maken. Hoe moet ik dat zien? Een lijst van users die in dezelfde topics gepost hebben?
Ik heb je query wat herschreven, zonder subqueries en right joins. Ongetest, uiteraard.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT count(DISTINCT friend_post.topic_id) cnt, u.naam FROM fok_user u INNER JOIN fok_post search_user_post ON search_user_post.auteur = 128465 AND search_user_post.tijdstip BETWEEN UNIX_TIMESTAMP('2014-01-01 00:00:01') AND UNIX_TIMESTAMP('2014-04-26 23:59:59') AND search_user_post.year = 2014 INNER JOIN fok_post friend_post ON friend_post.auteur = u.id AND friend_post.auteur != 128465 AND friend_post.topic_id = search_user_post.topic_id GROUP BY u.naam ORDER BY cnt DESC LIMIT 100; |
Oeh, ik ga hem ff testen.quote:Op zaterdag 26 april 2014 17:33 schreef Light het volgende:
SELECT count(DISTINCT friend_post.topic_id) cnt, u.naam
FROM fok_user u
INNER JOIN fok_post search_user_post
ON search_user_post.auteur = 128465
AND search_user_post.tijdstip BETWEEN UNIX_TIMESTAMP('2014-01-01 00:00:01') AND UNIX_TIMESTAMP('2014-04-26 23:59:59')
AND search_user_post.year = 2014
INNER JOIN fok_post friend_post
ON friend_post.auteur = u.id
AND friend_post.auteur != 128465
AND friend_post.topic_id = search_user_post.topic_id
GROUP BY u.naam
ORDER BY cnt DESC
LIMIT 100;
1 2 3 4 | id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE search_user_post ref topicid,tijdstip,auteur,year auteur 4 const 12009 Using where; Using temporary; Using filesort 1 SIMPLE friend_post ref topicid,auteur topicid 4 fokstats.search_user_post.topicid 100 Using where 1 SIMPLE u eq_ref PRIMARY PRIMARY 4 fokstats.friend_post.auteur 1 |
1 2 3 4 5 6 | id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2919 Using temporary; Using filesort 2 DERIVED <derived3> ALL NULL NULL NULL NULL 110 Using temporary; Using filesort 2 DERIVED fok_post ref topicid,auteur topicid 4 t.topicid 100 Using where 2 DERIVED fok_user eq_ref PRIMARY PRIMARY 4 fokstats.fok_post.auteur 1 3 DERIVED fok_post ref tijdstip,auteur,year auteur 4 12008 Using where; Using temporary |
De rest van de stats worden gegenereerd door Sphinx, echter heeft Sphinx niet de mogelijkheid om op meerdere velden te groeperen. Als ik dit volledig in Sphinx zou kunnen doen zou het een stuk sneller gaan.quote:Op maandag 28 april 2014 09:40 schreef Sitethief het volgende:
Is het niet sowieso handiger om zoveel mogelijk het ophalen van de juiste data door een database engine te laten doen ipv dat ik PHP na te gaan bootsen? De database engine zal hierin bijna altijd sneller zijn, tenzij je 10 subqueries ofzo gebruikt.
Voer je die query uit op een 'eigen' server? Als in een database-server die je zelf beheert en waar je indexen kunt aanpassen? Dan moet er nog wel wat snelheidswinst te behalen zijn.quote:Op maandag 28 april 2014 10:27 schreef bondage het volgende:
[..]
De rest van de stats worden gegenereerd door Sphinx, echter heeft Sphinx niet de mogelijkheid om op meerdere velden te groeperen. Als ik dit volledig in Sphinx zou kunnen doen zou het een stuk sneller gaan.
Maar ik realiseer me nu dat ik dit beter op kan lossen dmv een query ipv de data door php te laten verwerken.
Een andere optie is een betere server aanschaffen, daar heb ik echter op dit moment geen geld voor
Jup, is mijn eigen server. Dit zijn de velden en indexen die ik momenteel heb:quote:Op maandag 28 april 2014 19:09 schreef Light het volgende:
[..]
Voer je die query uit op een 'eigen' server? Als in een database-server die je zelf beheert en waar je indexen kunt aanpassen? Dan moet er nog wel wat snelheidswinst te behalen zijn.
Hmm... year heeft een kardinaliteit van 1. Heb je alleen posts uit 2014 in de database staan?quote:Op maandag 28 april 2014 22:54 schreef bondage het volgende:
[..]
Jup, is mijn eigen server. Dit zijn de velden en indexen die ik momenteel heb:
[ afbeelding ]
[ afbeelding ]
Dat viel mij ook al op idd. Er staat 6 jaar aan data in die tabel.quote:Op maandag 28 april 2014 22:59 schreef Light het volgende:
[..]
Hmm... year heeft een kardinaliteit van 1. Heb je alleen posts uit 2014 in de database staan?
Mooi Dan zou ik de index "auteur" wijzigen en er "year" als tweede kolom aan toevoegen. Een index mag namelijk meer dan 1 kolom bevattenquote:Op maandag 28 april 2014 23:01 schreef bondage het volgende:
[..]
Dat viel mij ook al op idd. Er staat 6 jaar aan data in die tabel.
Nee, dat getal maakt alleen uit als je zerofill gebruikt. En dat wil je niet (want voorloopnullen toevoegen hoort de database niet te doen).quote:Is het overigens erg dat id een int(15) is? Ik heb deze database ooit van iemand overgenomen en hier niet bij stilgestaan, ik weet echter dat een gewone int niet tot 15 gaat.
Dank, ik ga die twee indices even combineren en de query dan nogmaals testen. Ik gebruik geen zerofill dus dat is dan geen probleem gelukkig.quote:Op maandag 28 april 2014 23:13 schreef Light het volgende:
[..]
Mooi Dan zou ik de index "auteur" wijzigen en er "year" als tweede kolom aan toevoegen. Een index mag namelijk meer dan 1 kolom bevatten
(Je zou ook nog in plaats van "year" de kolom "tijdstip" kunnen toevoegen, maar ik vermoed dat het verschil vrij klein is terwijl de index veel groter kan worden.)
[..]
Nee, dat getal maakt alleen uit als je zerofill gebruikt. En dat wil je niet (want voorloopnullen toevoegen hoort de database niet te doen).
Als ik year uit de query haal en vervolgens dit jaar uitdraai duurt de query een stuk langer dan met year erin. Blijkbaar heeft de index voor dat veld wel effect. Ik had het primair toegevoegd voor het indexeringsproces omdat er per jaar een losse Sphinx index wordt gemaakt, op deze manier hoeft niet steeds alle data opnieuw verwerkt te worden. Dmv het year veld en bijbehorende index is ook die query een stuk sneller.quote:Op dinsdag 29 april 2014 09:59 schreef KomtTijd... het volgende:
Volgens mij kun je year beter helemaal uit de query halen en gewoon zorgen dat je tijdstippen nooit meerdere jaren overspannen.
Dan wil je wel heel zeker weten dat er een index op (auteur, tijdstip) wordt gebruikt. En ik weet niet hoe goed MySQL omgaat met een index die als range wordt gebruikt (BETWEEN) in combinatie met een andere index. Hoe beperkter het resultaat van een index is, hoe beter.quote:Op dinsdag 29 april 2014 09:59 schreef KomtTijd... het volgende:
Volgens mij kun je year beter helemaal uit de query halen en gewoon zorgen dat je tijdstippen nooit meerdere jaren overspannen.
Je maakt het MySQL op die manier makkelijker om twee kolommen te gebruiken in een index, waardoor de resultaatset kleiner wordt. En dat helpt weer om de snelheid omhoog te krijgen MySQL wordt ook wel beter in het combineren van twee losse indexen, maar dat levert volgens mij nog niet hetzelfde resultaat op.quote:Op maandag 28 april 2014 23:19 schreef bondage het volgende:
[..]
Dank, ik ga die twee indices even combineren en de query dan nogmaals testen. Ik gebruik geen zerofill dus dat is dan geen probleem gelukkig.
Wat is eigenlijk het voordeel van het combineren van die twee?
Duidelijk.quote:Op dinsdag 29 april 2014 21:27 schreef Light het volgende:
[..]
Je maakt het MySQL op die manier makkelijker om twee kolommen te gebruiken in een index, waardoor de resultaatset kleiner wordt. En dat helpt weer om de snelheid omhoog te krijgen MySQL wordt ook wel beter in het combineren van twee losse indexen, maar dat levert volgens mij nog niet hetzelfde resultaat op.
Overigens is een index op (auteur, year) ook nog steeds te gebruiken als index op auteur maar het is niet te gebruiken als index op year. Als je die ook los nodig hebt, moet je daar dus een aparte index voor maken / houden.
Wat moet dit voorstellenquote:Op woensdag 30 april 2014 15:01 schreef slacker_nl het volgende:
Omdat ik soms zo loop te miepen over tests:
[ afbeelding ]
100% code coverage! (dit laat Devel::Cover zien en aangezien er weinig perl mensjes zijn ging ik de PHP mensjes spammen )quote:
Ziet er wel leuk uit, die statistiekenquote:Op woensdag 30 april 2014 17:53 schreef slacker_nl het volgende:
[..]
100% code coverage! (dit laat Devel::Cover zien en aangezien er weinig perl mensjes zijn ging ik de PHP mensjes spammen )
Dat is 000-package.t, daarin worden de volgende zaken getest:quote:Op woensdag 30 april 2014 18:42 schreef Light het volgende:
[..]
Ziet er wel leuk uit, die statistieken
Maar wat is er zo bijzonder aan die test met als time 85.9? Die duurt wel erg lang.
Dan snap ik wel dat die tests ook lang duren (in ieder geval in verhouding).quote:Op woensdag 30 april 2014 20:59 schreef slacker_nl het volgende:
[..]
Dat is 000-package.t, daarin worden de volgende zaken getest:
1) MANIFEST file ok
2) Modules compilen ok
3) POD (documentatie) syntax ok
4) POD coverage ok (dus doc je ook al je functies)
5) Compilen je scripts ok
Die duren wat langer, echt niet zo spannend allemaal. Dat zijn eigenlijk release-only tests.
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT count(DISTINCT friend_post.topicid) cnt, u.naam FROM fok_user u INNER JOIN fok_post search_user_post ON search_user_post.auteur = 128465 AND search_user_post.tijdstip BETWEEN UNIX_TIMESTAMP('2014-04-01 00:00:01') AND UNIX_TIMESTAMP('2014-04-26 23:59:59') AND search_user_post.year = 2014 INNER JOIN fok_post friend_post ON friend_post.auteur = u.id AND friend_post.auteur != 128465 AND friend_post.topicid = search_user_post.topicid GROUP BY u.naam ORDER BY cnt DESC LIMIT 100; |
Hmm... da's wel onverwacht... het (geschatte) aantal rijen voor de eerste query gaat van 12.000 naar 2.400 en toch is de query veel trager...quote:Op woensdag 30 april 2014 22:15 schreef bondage het volgende:
Hmm, de query is met deze nieuwe index trager geworden. Hij duurde eerst 0,83 seconden, nu 3,46. Ik heb exact dezelfde parameters gebruikt als de vorige keer toen de indices nog niet gecombineerd waren.
Dit is de explain:
[ afbeelding ]
Ik heb de query van Light gebruikt aangezien die sowieso al sneller was dan die van mij.
[ code verwijderd ]
FORCE INDEX gebruiken misschien?
Jup, ik snap er ook niets van Ik ga voor de zekerheid toch ff FORCE INDEX proberen.quote:Op woensdag 30 april 2014 22:35 schreef Light het volgende:
[..]
Hmm... da's wel onverwacht... het (geschatte) aantal rijen voor de eerste query gaat van 12.000 naar 2.400 en toch is de query veel trager...
Ik kan me niet voorstellen dat dat helpt, omdat de juiste index al wordt gebruikt.quote:Op woensdag 30 april 2014 22:36 schreef bondage het volgende:
[..]
Jup, ik snap er ook niets van Ik ga voor de zekerheid toch ff FORCE INDEX proberen.
Zou een gecombineerde index op topic_id en auteur misschien een optie zijn?quote:Op woensdag 30 april 2014 22:37 schreef Light het volgende:
[..]
Ik kan me niet voorstellen dat dat helpt, omdat de juiste index al wordt gebruikt.
Dat lijkt me niet nuttig, in ieder geval niet in die volgorde.quote:Op woensdag 30 april 2014 23:15 schreef bondage het volgende:
[..]
Zou een gecombineerde index op topic_id en auteur misschien een optie zijn?
Dit doet mij vermoeden dat het alleen om een standaardwaarde gaat en dit verder geen invloed heeft op de data in de tabel.quote:The table character set and collation are used as default values for column definitions if the column character set and collation are not specified in individual column definitions. The table character set and collation are MySQL extensions; there are no such things in standard SQL.
Ik heb alle bedrijven dat wel eens horen zeggen. Maar nog nooit een bedrijf tegengekomen die het geheel volgens het boekje heeft geïmplementeerd. Jammer hoor. Het scheelt zoveel in tijd en kwaliteit.quote:Op maandag 5 mei 2014 22:06 schreef TwenteFC het volgende:
Oh god, heb een boek gekocht over Test driven development, gaat het dan toch nog gebeuren?
Krijg binnenkort de kans om een gehele shop vanaf scrap op te zetten, waarbij de oude database slechts als api wordt gebruikt.quote:Op maandag 5 mei 2014 22:09 schreef Juicyhil het volgende:
[..]
Ik heb alle bedrijven dat wel eens horen zeggen. Maar nog nooit een bedrijf tegengekomen die het geheel volgens het boekje heeft geïmplementeerd. Jammer hoor. Het scheelt zoveel in tijd en kwaliteit.
Ja dan is het zeker een goed voornemen om tests te schrijven. Heb het zelf vaak genoeg in projecten geprobeerd erdoorheen te krijgen, maar dan komt er een deadline om de hoek kijken en krijgt het geen prioriteit meer enzo.quote:Op maandag 5 mei 2014 22:17 schreef TwenteFC het volgende:
[..]
Krijg binnenkort de kans om een gehele shop vanaf scrap op te zetten, waarbij de oude database slechts als api wordt gebruikt.
Ik weet hoe rampzalig niet geteste spaghetticode is, wil het dus deze keer meteen "goed" doen.
Dat het tijd bespaart wil er bij de hogere heren nog niet in, maar heb als excuus gebruikt dat dit verplicht is voor mijn opleiding. (deeltijd hbo).
Hier net zo, een klein bedrijf waar we eigenlijk meer misbruikt worden als helpdesk dan dat we daadwerkelijke nieuwe webapplicaties opzetten.quote:Op maandag 5 mei 2014 22:23 schreef Juicyhil het volgende:
[..]
Ja dan is het zeker een goed voornemen om tests te schrijven. Heb het zelf vaak genoeg in projecten geprobeerd erdoorheen te krijgen, maar dan komt er een deadline om de hoek kijken en krijgt het geen prioriteit meer enzo.
Ik voel je. Dat heb ik ook vaker meegemaakt. Met alle drama zoals security issues en jankende klanten eromheen. Maar dat is nu voorbijquote:Op maandag 5 mei 2014 22:27 schreef TwenteFC het volgende:
Wat dus soms ook een ramp is, omdat de code een ramp is. Oorspronkelijk gemaakt door een 16 jarige als bijbaantje 10 jaar geleden.
Ok, de enige andere optie die ik kan bedenken is dat ik een snellere server nodig heb en dat de huidige gewoon niet voldoet om dit soort statistieken uit te draaien. In ieder geval bedankt voor het meedenkenquote:Op vrijdag 2 mei 2014 21:50 schreef Light het volgende:
[..]
Dat lijkt me niet nuttig, in ieder geval niet in die volgorde.
Dat herken ik, zo hebben wij 2 sites onder onze hoeden gekregen die zijn gebouwd door een gast in Bangladesh...quote:Op maandag 5 mei 2014 22:27 schreef TwenteFC het volgende:
Wat dus soms ook een ramp is, omdat de code een ramp is. Oorspronkelijk gemaakt door een 16 jarige als bijbaantje 10 jaar geleden.
Lezen? Of daadwerkelijk TDD gaan gebruiken?quote:Op maandag 5 mei 2014 22:06 schreef TwenteFC het volgende:
Oh god, heb een boek gekocht over Test driven development, gaat het dan toch nog gebeuren?
En is de database wel op orde? Als dat namelijk ook niet op orde is loop je alsnog tegen allerlei shit aan, tenzij je wat handige mappers gaat maken, maar dan moet je maar zien of dat ook performed. Overigens snap ik niet waarom bedrijven nog steeds hun eigen webshops ontwikkelen, het is duur in onderhoud, en je haalt nooit de kwaliteit die bestaande software levert.quote:Op maandag 5 mei 2014 22:17 schreef TwenteFC het volgende:
[..]
Krijg binnenkort de kans om een gehele shop vanaf scrap op te zetten, waarbij de oude database slechts als api wordt gebruikt.
Ik weet hoe rampzalig niet geteste spaghetticode is, wil het dus deze keer meteen "goed" doen.
Dat het tijd bespaart wil er bij de hogere heren nog niet in, maar heb als excuus gebruikt dat dit verplicht is voor mijn opleiding. (deeltijd hbo).
Helemaal mee eens, maar helaas mag ik het niet herbouwen van mijn baas... kost te veel tijd.quote:Op dinsdag 6 mei 2014 11:44 schreef Chandler het volgende:
Voordeel is wel dat de code gelijk up to date is, je niet steeds je hoeft in te lezen in de 'oude' code. scheelt soms erg veel tijd/stress/frustraties om gewoon overnieuw te beginnen dan door te gaan op andermans werk
Beide In eerste instantie voor een eigen thuisprojectje zodat ik er vast aan kan wennen en daarna op het werk.quote:Op dinsdag 6 mei 2014 09:02 schreef slacker_nl het volgende:
[..]
Lezen? Of daadwerkelijk TDD gaan gebruiken?
De database is ook pure troep, maar daar gooien we gewoon een api service tegenaan.quote:Op dinsdag 6 mei 2014 11:21 schreef raptorix het volgende:
[..]
En is de database wel op orde? Als dat namelijk ook niet op orde is loop je alsnog tegen allerlei shit aan, tenzij je wat handige mappers gaat maken, maar dan moet je maar zien of dat ook performed. Overigens snap ik niet waarom bedrijven nog steeds hun eigen webshops ontwikkelen, het is duur in onderhoud, en je haalt nooit de kwaliteit die bestaande software levert.
Moet je eens kijken hoeveel Magentodevelopers er gevraagd worden om van alles te herschrijven omdat Magento apenballen zuigt.quote:Op dinsdag 6 mei 2014 11:21 schreef raptorix het volgende:
[..]
Overigens snap ik niet waarom bedrijven nog steeds hun eigen webshops ontwikkelen, het is duur in onderhoud, en je haalt nooit de kwaliteit die bestaande software levert.
En je bent nog min of meer afhankelijk van een externe partij ook. Nooit leuk.quote:Op dinsdag 6 mei 2014 18:51 schreef Boze_Appel het volgende:
[..]
Moet je eens kijken hoeveel Magentodevelopers er gevraagd worden om van alles te herschrijven omdat Magento apenballen zuigt.
De grootste reden voor eigen webshopsoftware is vaak omdat ze allerlei dingen erin willen hebben die niet met plugins te regelen is en niet standaard in de shops zit, dus dan kan je bestaande code gaan hacken waarvan steeds nieuwe updates komen of een net framework pakken en vanaf daar aan de slag gaan. Bovendien hebben ze vaak al hun eigen facturatiesysteem, dus heel dat stuk heb je niet nodig.
Je kunt toch zelf initiatief tonen als je het zo'n leuk project vind om in je eigen tijd het zelf te schrijven? en dan eventueel verkopen (of via half jaar betaald vakantie, ken een persoon die zo een lange tijd vrij was op de kosten van de baas!, betaald vakantie dus.) ? neem aan dat het idee vrij te gebruiken is?! staat dan ook zeer goed op je cvquote:Op dinsdag 6 mei 2014 12:03 schreef Darkomen het volgende:
[..]
Helemaal mee eens, maar helaas mag ik het niet herbouwen van mijn baas... kost te veel tijd.
En grootte kans dat hij het dan niet meer snapt
Mijn baas snapt ook niet wat ik doe, maakt ook niet uit, ik mag zelf bepalen waar ik aan werk. Als ik maar oplever wat er wordt gevraagd.quote:Op dinsdag 6 mei 2014 12:03 schreef Darkomen het volgende:
[..]
Helemaal mee eens, maar helaas mag ik het niet herbouwen van mijn baas... kost te veel tijd.
En grootte kans dat hij het dan niet meer snapt
In n vrijetijd ben ik druk met mn eigen sites ;-)quote:Op dinsdag 6 mei 2014 22:42 schreef Chandler het volgende:
[..]
Je kunt toch zelf initiatief tonen als je het zo'n leuk project vind om in je eigen tijd het zelf te schrijven? en dan eventueel verkopen (of via half jaar betaald vakantie, ken een persoon die zo een lange tijd vrij was op de kosten van de baas!, betaald vakantie dus.) ? neem aan dat het idee vrij te gebruiken is?! staat dan ook zeer goed op je cv
Helaas programmeert mijn baas ook mee aan onze projecten.quote:Op dinsdag 6 mei 2014 22:46 schreef bondage het volgende:
[..]
Mijn baas snapt ook niet wat ik doe, maakt ook niet uit, ik mag zelf bepalen waar ik aan werk. Als ik maar oplever wat er wordt gevraagd.
En wat is je maandelijkse onderhoudsbudget als ik vragen mag?quote:Op dinsdag 6 mei 2014 18:09 schreef TwenteFC het volgende:
[..]
Beide In eerste instantie voor een eigen thuisprojectje zodat ik er vast aan kan wennen en daarna op het werk.
[..]
De database is ook pure troep, maar daar gooien we gewoon een api service tegenaan.
Dus de database van het nieuwe product kan ik ook zelf opzetten.
En dat bestaande software dezelfde kwaliteit levert dat is niet helemaal waar, wij zullen sowieso functionaliteit gaan missen of welke niet volledig aan onze wensen voldoen.
En daarbij krijg je met bestaande software vaak het zelfde als wat we nu hebben; troep.
Waarom je uberhaupt Magento zou gebruiken is me een raadsel, ik heb het ooit wel eens bekeken, wat een bagger zeg, alleen al de honderden zo niet duizenden files waarmee je te maken hebt.quote:Op dinsdag 6 mei 2014 18:51 schreef Boze_Appel het volgende:
[..]
Moet je eens kijken hoeveel Magentodevelopers er gevraagd worden om van alles te herschrijven omdat Magento apenballen zuigt.
De grootste reden voor eigen webshopsoftware is vaak omdat ze allerlei dingen erin willen hebben die niet met plugins te regelen is en niet standaard in de shops zit, dus dan kan je bestaande code gaan hacken waarvan steeds nieuwe updates komen of een net framework pakken en vanaf daar aan de slag gaan. Bovendien hebben ze vaak al hun eigen facturatiesysteem, dus heel dat stuk heb je niet nodig.
Een goede webshop in een halfjaar schrijven? GL, gaat je niet lukken.quote:Op dinsdag 6 mei 2014 22:42 schreef Chandler het volgende:
[..]
Je kunt toch zelf initiatief tonen als je het zo'n leuk project vind om in je eigen tijd het zelf te schrijven? en dan eventueel verkopen (of via half jaar betaald vakantie, ken een persoon die zo een lange tijd vrij was op de kosten van de baas!, betaald vakantie dus.) ? neem aan dat het idee vrij te gebruiken is?! staat dan ook zeer goed op je cv
En je configfile in een .xml die alleen met een .htaccess afgeschermd is. Zit je dus op een gare (shared) server waarbij je niet alle functies van .htaccess kan gebruiken staat je config open voor heel de wereld.quote:Op woensdag 7 mei 2014 10:58 schreef raptorix het volgende:
[..]
Waarom je uberhaupt Magento zou gebruiken is me een raadsel, ik heb het ooit wel eens bekeken, wat een bagger zeg, alleen al de honderden zo niet duizenden files waarmee je te maken hebt.
Ik zit me dit echt af te vragen. Geen geld hebben om webshopsoftware naar je wensen aan te passen (door middel van plugins en/of patchen en upstream gooien), maar wel geld hebben om het van scratch te bouwen. Raar.quote:Op dinsdag 6 mei 2014 18:51 schreef Boze_Appel het volgende:
De grootste reden voor eigen webshopsoftware is vaak omdat ze allerlei dingen erin willen hebben die niet met plugins te regelen is en niet standaard in de shops zit, dus dan kan je bestaande code gaan hacken waarvan steeds nieuwe updates komen of een net framework pakken en vanaf daar aan de slag gaan. Bovendien hebben ze vaak al hun eigen facturatiesysteem, dus heel dat stuk heb je niet nodig.
Zelf ben ik wel gecharmeerd van NOP commerce, opensource (wel c#/.net).quote:Op woensdag 7 mei 2014 11:32 schreef slacker_nl het volgende:
[..]
Ik zit me dit echt af te vragen. Geen geld hebben om webshopsoftware naar je wensen aan te passen (door middel van plugins en/of patchen en upstream gooien), maar wel geld hebben om het van scratch te bouwen. Raar.
Het lijkt me dat die software inmiddels best lekker is uitgekristalliseerd en je dus makkelijk met een off-the-shelf products aan de gang kan gaan.
Mag ik vragen waarom niet? en wat is goed? ebay? marktplaats? 1 produkt webshop? je vergelijkt gelijk peren met kruidnoten...quote:Op woensdag 7 mei 2014 10:59 schreef raptorix het volgende:
Een goede webshop in een halfjaar schrijven? GL, gaat je niet lukken.
ASP / MS SQL webshop. The horror!quote:Op woensdag 7 mei 2014 13:51 schreef raptorix het volgende:
[..]
Zelf ben ik wel gecharmeerd van NOP commerce, opensource (wel c#/.net).
http://www.nopcommerce.com/downloads.aspx
De webshop zelf is 2 jaar geleden opnieuw gebouwd, en qua werk wat er daarna ingestopt is niet erg veel. Programmeer werk dan.quote:Op woensdag 7 mei 2014 10:57 schreef raptorix het volgende:
[..]
En wat is je maandelijkse onderhoudsbudget als ik vragen mag?
Je doet alsof een webshop een heel gecompliceerd iets is, dat valt ook wel weer mee.quote:Op woensdag 7 mei 2014 10:59 schreef raptorix het volgende:
[..]
Een goede webshop in een halfjaar schrijven? GL, gaat je niet lukken.
Wat snap je niet aan een goede webshop?quote:Op woensdag 7 mei 2014 17:12 schreef Chandler het volgende:
[..]
Mag ik vragen waarom niet? en wat is goed? ebay? marktplaats? 1 produkt webshop? je vergelijkt gelijk peren met kruidnoten...
ASP? C#/.netquote:
Ehm, wij werken met een team van een man of 10 ongeveer een jaar aan 1 webshop, en dan gebruiken we ook nog eens een enterprise product, maar goed als jij denkt dat een webshop iets simpels is....quote:Op woensdag 7 mei 2014 18:18 schreef TwenteFC het volgende:
[..]
Je doet alsof een webshop een heel gecompliceerd iets is, dat valt ook wel weer mee.
Je hebt alleen flexibiliteit nodig om al die seo meuk handelbaar te houden op een lange termijn.
Yep, ik heb nu ook 2 shops in Magento moeten maken, het is ook best wel bagger.quote:Op woensdag 7 mei 2014 10:58 schreef raptorix het volgende:
[..]
Waarom je uberhaupt Magento zou gebruiken is me een raadsel, ik heb het ooit wel eens bekeken, wat een bagger zeg, alleen al de honderden zo niet duizenden files waarmee je te maken hebt.
Veel tabellen zegt niet alles, maar 348 is idioot, ik heb ooit in 1999 mijn eigen webshop geschreven die vrij uitgebreid was, en toen kwam ik volgens mij op een tabel of 25, overigens ook wel eens met een database gewerkt van boven de 1000 tablesquote:Op donderdag 8 mei 2014 08:11 schreef mstx het volgende:
[..]
Yep, ik heb nu ook 2 shops in Magento moeten maken, het is ook best wel bagger.
En dan heb je waarschijnlijk nog niet naar de database gekeken, een standaardinstallatie heeft 348 (!!!) tabellen. Je kan ook niet even een simpel importscriptje voor producten ofzo schrijven want dan moet je dus in superveel tabellen shit wegschrijven.
Ik mag toch hopen dat er goede documentatie beschikbaar was voor dat monster. Het grootste aantal tables dat ik ooit heb gezien zal ergens rond de 100 liggen. De documentatie was helaas erg beperkt en ik moest zelf uit gaan zoeken welke tables met elkaar te linken waren en op welke velden. Velden hadden, om het nog erger te maken, veelal onduidelijke namen wat dit gedoe er niet makkelijker op maakte. Heeft me erg veel tijd gekost om dat ding in kaart te brengen en alsnog te beschrijven.quote:Op donderdag 8 mei 2014 08:12 schreef raptorix het volgende:
[..]
overigens ook wel eens met een database gewerkt van boven de 1000 tables
Dit was de global product database van Ericson, zat op zich goed en logisch in elkaar, maar alles wat ook maar bekend was qua producten van Ericsson zat in dat ding, opzich als je gewend bent met complexe databases kom je er best goed uit, zaten wel wat vervelende dingen in, omdat zoveel applicaties er van gebruik maakten was men heel huiverig op changes, dus maakte men al snel weer een nieuw table aan. Zo waren er een stuk of 8 tables met regions/landen wat het niet echt mooi maakte.quote:Op donderdag 8 mei 2014 08:23 schreef bondage het volgende:
[..]
Ik mag toch hopen dat er goede documentatie beschikbaar was voor dat monster. Het grootste aantal tables dat ik ooit heb gezien zal ergens rond de 100 liggen. De documentatie was helaas erg beperkt en ik moest zelf uit gaan zoeken welke tables met elkaar te linken waren en op welke velden. Velden hadden, om het nog erger te maken, veelal onduidelijke namen wat dit gedoe er niet makkelijker op maakte. Heeft me erg veel tijd gekost om dat ding in kaart te brengen en alsnog te beschrijven.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | oc_product oc_product_attribute oc_product_description oc_product_discount oc_product_filter oc_product_image oc_product_option oc_product_option_value oc_product_profile oc_product_recurring oc_product_related oc_product_reward oc_product_special oc_product_to_category oc_product_to_download oc_product_to_layout oc_product_to_store |
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 | catalog_product_bundle_option catalog_product_bundle_option_value catalog_product_bundle_price_index catalog_product_bundle_selection catalog_product_bundle_selection_price catalog_product_bundle_stock_index catalog_product_enabled_index catalog_product_entity catalog_product_entity_datetime catalog_product_entity_decimal catalog_product_entity_gallery catalog_product_entity_group_price catalog_product_entity_int catalog_product_entity_media_gallery catalog_product_entity_media_gallery_value catalog_product_entity_text catalog_product_entity_tier_price catalog_product_entity_varchar catalog_product_flat_1 catalog_product_index_eav catalog_product_index_eav_decimal catalog_product_index_eav_decimal_idx catalog_product_index_eav_decimal_tmp catalog_product_index_eav_idx catalog_product_index_eav_tmp catalog_product_index_group_price catalog_product_index_price catalog_product_index_price_bundle_idx catalog_product_index_price_bundle_opt_idx catalog_product_index_price_bundle_opt_tmp catalog_product_index_price_bundle_sel_idx catalog_product_index_price_bundle_sel_tmp catalog_product_index_price_bundle_tmp catalog_product_index_price_cfg_opt_agr_idx catalog_product_index_price_cfg_opt_agr_tmp catalog_product_index_price_cfg_opt_idx catalog_product_index_price_cfg_opt_tmp catalog_product_index_price_downlod_idx catalog_product_index_price_downlod_tmp catalog_product_index_price_final_idx catalog_product_index_price_final_tmp catalog_product_index_price_idx catalog_product_index_price_opt_agr_idx catalog_product_index_price_opt_agr_tmp catalog_product_index_price_opt_idx catalog_product_index_price_opt_tmp catalog_product_index_price_tmp catalog_product_index_tier_price catalog_product_index_website catalog_product_link catalog_product_link_attribute catalog_product_link_attribute_decimal catalog_product_link_attribute_int catalog_product_link_attribute_varchar catalog_product_link_type catalog_product_option catalog_product_option_price catalog_product_option_title catalog_product_option_type_price catalog_product_option_type_title catalog_product_option_type_value catalog_product_relation catalog_product_super_attribute catalog_product_super_attribute_label catalog_product_super_attribute_pricing catalog_product_super_link |
Ik snap niet dat jij zegt dat een goede webshop niet in een halfjaar te bouwen is, weet niet op welk slakken tempo jij typt, maar beetje webshop valt ECHT wel in een halfjaar te ontwikkelen. Maar goed, voor de ene is goed goed en de ander slecht!quote:Op donderdag 8 mei 2014 08:00 schreef raptorix het volgende:
[..]
Wat snap je niet aan een goede webshop?
Natuurlijk kun je wel een webshop bouwen in een halfjaar, maar we hadden het over een goede webshop, maar mijn punt blijft dat het onzin is om zelf webshops te gaan bouwen, verspilling van tijd en geld, want het loont gewoon niet, er zijn zat prima producten op de markt waarbij men 10.000 uren heeft geinvesteerd om het te optimaliseren, daar kan je gewoon niet tegen op werken.quote:Op donderdag 8 mei 2014 08:51 schreef Chandler het volgende:
[..]
Ik snap niet dat jij zegt dat een goede webshop niet in een halfjaar te bouwen is, weet niet op welk slakken tempo jij typt, maar beetje webshop valt ECHT wel in een halfjaar te ontwikkelen. Maar goed, voor de ene is goed goed en de ander slecht!
Oh en je zegt dat jullie met 10 man werken, mooi man, zal wel een extreem uitgebreid product zijn, met bergen met opties etc.. wat een gemiddelde webshop dus niet nodig heeft, lijkt mij.
En als jij zegt dat 99% niet goed is, zowww dan kunnen we beter maar stoppen met internetten want er zijn zoveel webshops geschreven door 1 persoon, die zijn dus bij deze allemaal uitermate slecht..
De functionaliteit van een webshop is snel te maken. Tis een CMS met een Ogone koppeling. Echter heb je ook te maken met wat werkt prettig voor de gebruiker. Alles is te maken. Maar ben het met raptor eens dat je ook flink moet investeren in je product als je een goede bruikbare shop wilt hebben. Werkende prototypes zijn een, goed werkende eindproducten zijn een ander verhaal.quote:Op woensdag 7 mei 2014 18:18 schreef TwenteFC het volgende:
[..]
Je doet alsof een webshop een heel gecompliceerd iets is, dat valt ook wel weer mee.
Je hebt alleen flexibiliteit nodig om al die seo meuk handelbaar te houden op een lange termijn.
Is het absoluut geen onzin, als iedereen dacht zoals jij zaten we nog steeds te internetten op een modem en moesten we downloaden vanaf bbsjes...quote:Op donderdag 8 mei 2014 08:57 schreef raptorix het volgende:
Natuurlijk kun je wel een webshop bouwen in een halfjaar, maar we hadden het over een goede webshop, maar mijn punt blijft dat het onzin is om zelf webshops te gaan bouwen, verspilling van tijd en geld, want het loont gewoon niet, er zijn zat prima producten op de markt waarbij men 10.000 uren heeft geïnvesteerd om het te optimaliseren, daar kan je gewoon niet tegen op werken.
Ik ben het ook met je eens, maar meeste webshops hoeven geen detail tree, of bergen met opties, die willen producten aanbieden om te verkopen, met betaal mogelijkheid, klanten database... je kunt het jezelf zo moeilijk maken als je zelf wilt, maar het is in mijn ogen de uitdaging om het allemaal zelf te schrijven.quote:Op donderdag 8 mei 2014 08:58 schreef slacker_nl het volgende:
De functionaliteit van een webshop is snel te maken. Tis een CMS met een Ogone koppeling. Echter heb ook te maken met wat werkt prettig voor de gebruiker. Alles is te maken. Maar ben het met raptor eens dat je ook flink moet investeren in je product als je een goede bruikbare shop wilt hebben. Werkende prototypes zijn een, goed werkende eindproducten zijn een ander verhaal.
quote:
Staat op hun site.quote:nopCommerce is a fully customizable shopping cart. It's stable and highly usable. nopCommerce is an open source ecommerce solution that is ASP.NET (MVC) based with a MS SQL 2008 (or higher) backend database.
ASP.NET uses the multi-language abilities of the .NET Common Language Runtime, allowing Web pages to be coded in VB.NET, C#, J#, Delphi.NET, Chrome, etc.quote:
Iets doen omdat je het leuk vind of om te leren is heel wat anders dan professioneel een site ontwikkelen, daarnaast kan ik zeggen dat ik juist heel erg voor vooruitgang ben, en daarom liever nieuwe dingen ontwikkel dan het wiel opnieuw uitvinden.quote:Op donderdag 8 mei 2014 09:07 schreef Chandler het volgende:
[..]
Is het absoluut geen onzin, als iedereen dacht zoals jij zaten we nog steeds te internetten op een modem en moesten we downloaden vanaf bbsjes...
Juist doordat mensen zelf dingen proberen te maken leert men, kijkt men dingen van elkaar af. Ik heb zat sites ontwikkeld die NOOIT het daglicht hebben gezien, waarom, onvrede van mijn kant over het product wat ik had gemaakt, niet goed genoeg, maar heb ook zat sites wel afgemaakt die ik zo kon 'kopen' ipv zelf te schrijven, maar juist het zelf schrijven is vaak veel leuker dan het moeten werken met bv magento/wordpress/etc.
Het is jou mening dat het verspilling van geld en tijd is, ik verspeel ook veel tijd met vissen, uren aan de waterkant en totaal NIETS doen... god wat een verspilling van 'energie en geld'.. maar ik geniet er wel op en top van, leer iedere keer wat... dat heb je niet als je dingen gaat toevoegen aan bestaande producten, je hebt geen flauw idee wat er allemaal in het systeem gebeurd, hebt weinig controle over plus je leert niet hoe het allemaal in elkaar zit. Ik snap best dat je kiest voor pakketten die al bestaan, maar snap niet dat je het afraad om het zelf te maken.. zeg maar..
[..]
Ik ben het ook met je eens, maar meeste webshops hoeven geen detail tree, of bergen met opties, die willen producten aanbieden om te verkopen, met betaal mogelijkheid, klanten database... je kunt het jezelf zo moeilijk maken als je zelf wilt, maar het is in mijn ogen de uitdaging om het allemaal zelf te schrijven.
Daarom zie je ook bergen met mensen zelf blogs schrijven, vroeger gastenboeken etc maken... waarom? omdat het leuk is om het zelf te doen.. ipv iets te gebruiken wat van een ander is.
ASP is niet te vergelijken met ASP.NET , ongeveer zelfde om java te vergelijken met javascript.quote:
Het probleem met inhouse ontwikkelen is dat je een product aan het maken bent, dat is een compleet andere tak van sport dan het verlenen van een dienst.quote:Op donderdag 8 mei 2014 10:07 schreef KomtTijd... het volgende:
Het kan nog wel eens vies tegenvallen wat er aan 'goede' webshops op de markt is. Veel van ditsoort producten zijn ofwel proprietary met alle beperkingen van dien, ofwel van moeilijk belabberde kwaliteit. Als je echt een op maat gesneden oplossing zoekt, is beiden vaak geen optie en is inhouse ontwikkelen vaak echt de beste keus.
Het gaat erom wat het nut is, ik denk dat het veel nuttiger is om nieuwe features van bijvoorbeeld een opensource project te ontwikkelen, profiteren ook nog meer mensen van.quote:Op donderdag 8 mei 2014 10:12 schreef Chandler het volgende:
Dan denken we niet hetzelfde, dat kan hoor ik zou het liefst het wiel opnieuw uitvinden, is veel stoerder dan de spaken poetsen!
Allebei meuk, dus prima te vergelijken.quote:Op donderdag 8 mei 2014 10:11 schreef raptorix het volgende:
[..]
ASP is niet te vergelijken met ASP.NET , ongeveer zelfde om java te vergelijken met javascript.
Naja, laat ik niet gaan bashen in het PHP topicquote:Op donderdag 8 mei 2014 10:14 schreef Boze_Appel het volgende:
[..]
Allebei meuk, dus prima te vergelijken.
Ik heb gewoon slechte ervaringen met PHP, nu zal ik de laatste zijn die zal beweren dat er slechte talen zijn, want zelfs in een goede taal kun je slecht programmeren, maar ik vind het in PHP gewoon omslachtig, probeer maar eens c# in visual studio met Resharper en er zal een wereld voor je open gaan.quote:Op donderdag 8 mei 2014 10:19 schreef Chandler het volgende:
Wees vrij rap, tis hier toch meer slowchat... dan praten over 'php op zich'
Mja ik ben zelf bezig met het inhouse ontwikkelen van een CRM systeem. Na een jaar gekut met een open-source CRM systeem (Vtiger) ben ik wel enigszins teruggekomen op deze mening.quote:Op donderdag 8 mei 2014 10:13 schreef raptorix het volgende:
[..]
Het gaat erom wat het nut is, ik denk dat het veel nuttiger is om nieuwe features van bijvoorbeeld een opensource project te ontwikkelen, profiteren ook nog meer mensen van.
Wel eens gekeken naar Salesforce (niet opensource) maar wel zeer betaalbaar.quote:Op donderdag 8 mei 2014 10:23 schreef KomtTijd... het volgende:
[..]
Mja ik ben zelf bezig met het inhouse ontwikkelen van een CRM systeem. Na een jaar gekut met een open-source CRM systeem (Vtiger) ben ik wel enigszins teruggekomen op deze mening.
OS-producten gebruiken is alleen nuttig als er ook daadwerkelijk iets beschikbaar is wat een goeie basis heeft, en dat is lang niet altijd het geval.
+1 maar wat voor slechte ervaringen dan? maar C, C++, C# is niet mijn ding, nooit iets mee gedaan en zal het ws ook nooit gaan doen... php/python vind ik wel erg leuk, vooral nu Python omdat het lijkt op PHP maar toch compleet anders isquote:Op donderdag 8 mei 2014 10:22 schreef raptorix het volgende:
Ik heb gewoon slechte ervaringen met PHP, nu zal ik de laatste zijn die zal beweren dat er slechte talen zijn, want zelfs in een goede taal kun je slecht programmeren, maar ik vind het in PHP gewoon omslachtig, probeer maar eens c# in visual studio met Resharper en er zal een wereld voor je open gaan.
Naja het is alweer tijd geleden dat ik er wat mee gedaan heb, ik had veel problemen met configuratie onder windows.quote:Op donderdag 8 mei 2014 10:26 schreef Chandler het volgende:
[..]
+1 maar wat voor slechte ervaringen dan? maar C, C++, C# is niet mijn ding, nooit iets mee gedaan en zal het ws ook nooit gaan doen... php/python vind ik wel erg leuk, vooral nu Python omdat het lijkt op PHP maar toch compleet anders is
1 2 3 4 5 | string[] colors = Enum.GetNames(typeof(System.Drawing.KnownColor)); foreach (string color in colors.Where(c => c.ToLower().Contains("blue"))) { Console.WriteLine(color); } |
Je hebt een lijst met kleuren en wilt alle kleuren zien die blauw in hun naam hebben ofzo?quote:Op donderdag 8 mei 2014 10:31 schreef raptorix het volgende:
[..]
Naja het is alweer tijd geleden dat ik er wat mee gedaan heb, ik had veel problemen met configuratie onder windows.
Ter voorbeeld, hoe zou je dit in bijvoorbeeld PHP aanpakken?
[ code verwijderd ]
1 2 3 4 5 6 7 | <?php foreach ($lijstmetKleuren as $k=>$v) { if (strpos(strtolower($v),"blue") > 0) { // gevonden } } ?> |
Dat vind ik echt zo heerlijk met Linq, vrij complexe zaken kun je op prachtige manieren shortcutten.quote:Op donderdag 8 mei 2014 10:40 schreef Chandler het volgende:
ok
[ code verwijderd ]
Jammere van PHP is dat de ene keer je string, zoekwoord hebt en de andere keer zoekwoord, string
zo omslachtig is't niet maar moet zeggen dat ik het puntjes systeem van Python heerlijk vind .toLower().find('lol') etc
Maar juist shortcutten kan er ook voor zorgen dat de code onleesbaar wordt als het slecht is geprogrammeerdquote:Op donderdag 8 mei 2014 10:47 schreef raptorix het volgende:
[..]
Dat vind ik echt zo heerlijk met Linq, vrij complexe zaken kun je op prachtige manieren shortcutten.
Uiteraard, je moet het niet overdrijven.quote:Op donderdag 8 mei 2014 10:48 schreef Rockfire het volgende:
[..]
Maar juist shortcutten kan er ook voor zorgen dat de code onleesbaar wordt als het slecht is geprogrammeerd
1 2 3 4 5 6 7 8 9 10 11 | decimal total = new decimal(); decimal petesTotalNumberOfRolls = petes.Sum(x => x.Value); decimal colinsTotalNumberOfRolls = colins.Sum(x => x.Value); foreach (KeyValuePair<int, int> kvpPetes in petes) { decimal colinsNumberOfThrows = colins.Where(x => x.Key < kvpPetes.Key).Sum(x => x.Value); decimal petesNumberOfThrows = kvpPetes.Value; total = total + ((petesNumberOfThrows / petesTotalNumberOfRolls) * (colinsNumberOfThrows / colinsTotalNumberOfRolls)); } |
Strpos geeft de positie van de gevonden string terug, dus dat kan ook 0 zijn. Om te weten of-ie gevonden is, kun je beter een sterke comparison doen met false (dus === false voor niet en !== false voor wel gevonden). En als je stripos() gevruikt, is toLower() niet nodigquote:Op donderdag 8 mei 2014 10:40 schreef Chandler het volgende:
ok
[ code verwijderd ]
Jammere van PHP is dat de ene keer je string, zoekwoord hebt en de andere keer zoekwoord, string
zo omslachtig is't niet maar moet zeggen dat ik het puntjes systeem van Python heerlijk vind .toLower().find('lol') etc
Ook voorbeelden moeten kloppen, je weet nooit wat iemand copy-paste en in z'n applicatie stopt.quote:Op donderdag 8 mei 2014 10:53 schreef Chandler het volgende:
Klopt Tijn, !== moest het zijn maar dan nog, ging even snel om het voorbeeld
Je zou bijvoorbeeld in PHP een library kunnen oproepen met daarin de kleuren. Maar voor de overzichtelijkheid, stop ik de kleuren in een array.quote:Op donderdag 8 mei 2014 10:53 schreef Tijn het volgende:
[..]
Strpos geeft de positie van de gevonden string terug, dus dat kan ook 0 zijn. Om te weten of-ie gevonden is, kun je beter een sterke comparison doen met false (dus === false voor niet en !== false voor wel gevonden). En als je stripos() gevruikt, is toLower() niet nodig
1 2 3 4 | $colors = array("red", "blue", "yellow"); if $(in_array("blue", $colors) { echo array_search("blue", $colors); } |
Juistquote:Op donderdag 8 mei 2014 10:55 schreef Tijn het volgende:
[..]
Ook voorbeelden moeten kloppen, je weet nooit wat iemand copy-paste en in z'n applicatie stopt.
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Just say hi!
Het punt is dat het niet native in je framework zit, ben wel benieuwd naar de performance op wat grotere collecties.quote:Op donderdag 8 mei 2014 10:59 schreef Tijn het volgende:
Sowieso is Linq natuurlijk gewoon te implementeren in PHP, als je het echt zo graag zou willen gebruiken
Er zijn meerdere libraries te vinden die je zo kunt toepassen, zoals http://phplinq.codeplex.com
In PHP kun je ook gewoon methods chainen...quote:Op donderdag 8 mei 2014 10:47 schreef raptorix het volgende:
[..]
Dat vind ik echt zo heerlijk met Linq, vrij complexe zaken kun je op prachtige manieren shortcutten.
Tsja, geen idee natuurlijk. Maar ook dan is er vast wel iets te bedenken om het wel te laten performen lijkt mequote:Op donderdag 8 mei 2014 11:01 schreef raptorix het volgende:
[..]
Het punt is dat het niet native in je framework zit, ben wel benieuwd naar de performance op wat grotere collecties.
Meh, zal al snel net zo duur zijn als dat ik ben, plus dan moet ik er nog steeds tegenaan ontwikkelen. Voor zover dat uberhaupt mag.quote:Op donderdag 8 mei 2014 10:24 schreef raptorix het volgende:
[..]
Wel eens gekeken naar Salesforce (niet opensource) maar wel zeer betaalbaar.
Vooral op lange termijn is in-house natuurlijk veel goedkoper, als je het goed doet. Voor zo'n Salesforce mag je voor een klein team al snel 30K per jaar neerleggen, dus als je dat 10 jaar gebruikt heb je 3 ton verbrand.quote:Op donderdag 8 mei 2014 11:05 schreef KomtTijd... het volgende:
[..]
Meh, zal al snel net zo duur zijn als dat ik ben, plus dan moet ik er nog steeds tegenaan ontwikkelen. Voor zover dat uberhaupt mag.
Voorbeeldje?quote:Op donderdag 8 mei 2014 11:01 schreef Sitethief het volgende:
[..]
In PHP kun je ook gewoon methods chainen...
PDO bijvoorbeeld:quote:
1 2 3 | <?php $row = $db->query('SELECT * FROM `example`')->fetch(); ?> |
Kan, maar ik zou juist dit los van elkaar willen ivm fouten etcquote:Op donderdag 8 mei 2014 11:19 schreef Tijn het volgende:
PDO bijvoorbeeld:
[ code verwijderd ]
Je kunt dit ook heel makkelijk met je eigen classes doen, het is gewoon een kwestie van de methodes zichzelf laten returnen.
Valt juist erg mee, daarnaast is Salesforce perfect om aan te sluiten op je maatwerk omdat je direct een SOAP interface kunt genereren, ik had het binnen een dag aangesloten op een bestaand CMS voor een woningcorporatie.quote:Op donderdag 8 mei 2014 11:11 schreef Tijn het volgende:
[..]
Vooral op lange termijn is in-house natuurlijk veel goedkoper, als je het goed doet. Voor zo'n Salesforce mag je voor een klein team al snel 30K per jaar neerleggen, dus als je dat 10 jaar gebruikt heb je 3 ton verbrand.
Mwah, 135,- euro per gebruiker per jaar is met een klein clubje van 20 man toch een slordige 32.400 euro, toch?quote:
Ga jij maar een maatwerk CRM systeem maken voor een club van 20 man, en ga het ook maar eens supporten en onderhouden de komende 10 jaar. Het is algemeen bekend dat het bouwen van maatwerk nooit opweegt tegen licentie kosten.quote:Op donderdag 8 mei 2014 11:28 schreef Tijn het volgende:
[..]
Mwah, 135,- euro per gebruiker per jaar is met een klein clubje van 20 man toch een slordige 32.400 euro, toch?
Zal ongetwijfeld in de meeste gevallen zo zijn, maar dan nog is het erg duur, ongetwijfeld nog duurder als je het zelf gaat ontwikkelen maar goed...quote:Op donderdag 8 mei 2014 11:29 schreef raptorix het volgende:
Ga jij maar een maatwerk CRM systeem maken voor een club van 20 man, en ga het ook maar eens supporten en onderhouden de komende 10 jaar. Het is algemeen bekend dat het bouwen van maatwerk nooit opweegt tegen licentie kosten.
Ik doe dat al. Eenmalig is het een investering voor zo'n club, maar daarna zijn de kosten per jaar om het in de lucht te houden veel lager, waarop het op termijn zichzelf makkelijk terugbetaalt voor een organisatie.quote:Op donderdag 8 mei 2014 11:29 schreef raptorix het volgende:
[..]
Ga jij maar een maatwerk CRM systeem maken voor een club van 20 man, en ga het ook maar eens supporten en onderhouden de komende 10 jaar. Het is algemeen bekend dat het bouwen van maatwerk nooit opweegt tegen licentie kosten.
Ik denk niet dat jouw productje ook maar in de buurt komt wat Salesforce bied.quote:Op donderdag 8 mei 2014 11:32 schreef Tijn het volgende:
[..]
Ik doe dat al. Eenmalig is het een investering voor zo'n club, maar daarna zijn de kosten per jaar om het in de lucht te houden veel lager, waarop het op termijn zichzelf makkelijk terugbetaalt voor een organisatie.
Nee, zeker niet. Ik denk ook wel dat er organisaties zijn waarvoor zoiets als Salesforce een goede uitkomst is, hoor. Maar ik zie een heleboel simpele, kleine clubs in Nederland waar minder dan 30 mensen werken die wel behoefte hebben aan IT, maar niet aan heel uitgebreide systemen. Die willen gewoon een telefoongesprekje invoeren op een webpagina zodat hun collega's ervan op de hoogte zijn of een reminder krijgen 2 maanden voordat een abonnement van een klant afloopt en that's it. Voor zulke simpele eisen is een maatwerkoplossing helemaal geen gek idee, want dan heb je nauwelijks lopende kosten.quote:Op donderdag 8 mei 2014 11:43 schreef raptorix het volgende:
[..]
Ik denk niet dat jouw productje ook maar in de buurt komt wat Salesforce bied.
Oh daar ben ik wel mee eens, ik had het meer over wat uitgebreide CRM oplossingen. Het punt wat ik wil maken is dat je je organisatie moet inrichten op product ontwikkeling, en dat dat een hele andere tak van sport is.quote:Op donderdag 8 mei 2014 11:47 schreef Tijn het volgende:
[..]
Nee, zeker niet. Ik denk ook wel dat er organisaties zijn waarvoor zoiets als Salfesforce een goede uitkomst is, hoor. Maar ik zie een heleboel simpele, kleine clubs in Nederland waar minder dan 30 mensen werken die wel behoefte hebben aan IT, maar niet aan heel uitgebreide systemen. Die willen gewoon een telefoongesprekje invoeren op een webpagina zodat hun collega's ervan op de hoogte zijn of een reminder krijgen 2 maanden voordat een abonnement van een klant afloopt en that's it. Voor zulke simpele eisen is een maatwerkoplossing helemaal geen gek idee, want dan heb je nauwelijks lopende kosten.
Ik weet ook niet of het slim is om het écht in-house te doen als je geen IT-bedrijf bent. Ik zou denken dat bedrijven zich beter kunnen richten op hun core business en voor IT-maatwerk eenmalig een bureau of een competente freelancer kunnen inschakelen.quote:Op donderdag 8 mei 2014 11:54 schreef raptorix het volgende:
[..]
Het punt wat ik wil maken is dat je je organisatie moet inrichten op product ontwikkeling, en dat dat een hele andere tak van sport is.
Dat is wel waar we hier aan zouden zitten ja.quote:Op donderdag 8 mei 2014 11:28 schreef Tijn het volgende:
[..]
Mwah, 135,- euro per gebruiker per jaar is met een klein clubje van 20 man toch een slordige 32.400 euro, toch?
Dat hoeft ook helemaal niet. Waarschijnlijk zouden we 90% van de functies nieteens gebruiken en moeten er alsnog heel veel functies bijgeschreven worden. En dat is een handicap die veel kant-en-klaar pakketten hebben. Ze zijn zo uitgebreid mogelijk om een zo breed mogelijke markt te bedienen, maar een maatwerkoplossing hoeft vaak maar een fractie van die functionaliteit te bevatten. En is daardoor ook veel sneller te ontwikkelen en makkelijker te onderhouden.quote:Op donderdag 8 mei 2014 11:43 schreef raptorix het volgende:
[..]
Ik denk niet dat jouw productje ook maar in de buurt komt wat Salesforce bied.
Precies. Kleine bedrijven doen over het algemeen maar 1 ding en willen daarom een IT-product dat goed aansluit bij dat ene ding. Dat vind je zelden bij generieke software, terwijl het vaak wel goed te doen is om die ene functie op maat te maken.quote:Op donderdag 8 mei 2014 12:05 schreef KomtTijd... het volgende:
[..]
Dat hoeft ook helemaal niet. Waarschijnlijk zouden we 90% van de functies nieteens gebruiken en moeten er alsnog heel veel functies bijgeschreven worden. En dat is een handicap die veel kant-en-klaar pakketten hebben. Ze zijn zo uitgebreid mogelijk om een zo breed mogelijke markt te bedienen, maar een maatwerkoplossing hoeft vaak maar een fractie van die functionaliteit te bevatten. En is daardoor ook veel sneller te ontwikkelen en makkelijker te onderhouden.
Ik ben genoeg van dit soort software gedrochten tegengekomen, en mijn ervaring is dat men er substantieel geld mee verliest omdat de software niet naar behoren werkt of niet aangepast kan worden.quote:Op donderdag 8 mei 2014 12:10 schreef Tijn het volgende:
[..]
Precies. Kleine bedrijven doen over het algemeen maar 1 ding en willen daarom een IT-product dat goed aansluit bij dat ene ding. Dat vind je zelden bij generieke software, terwijl het vaak wel goed te doen is om die ene functie op maat te maken.
Tsja, uitvoering is alles. Natuurlijk wordt er een hoop rommel geschreven, maar dat wil niet zeggen dat het per se een slecht idee is om een maatwerkoplossing te laten maken.quote:Op donderdag 8 mei 2014 12:35 schreef raptorix het volgende:
[..]
Ik ben genoeg van dit soort software gedrochten tegengekomen, en mijn ervaring is dat men er substantieel geld mee verliest omdat de software niet naar behoren werkt of niet aangepast kan worden.
"met mensen als jou"quote:Op donderdag 8 mei 2014 08:03 schreef raptorix het volgende:
[..]
Ehm, wij werken met een team van een man of 10 ongeveer een jaar aan 1 webshop, en dan gebruiken we ook nog eens een enterprise product, maar goed als jij denkt dat een webshop iets simpels is....
Vandaar dat met mensen als jou de kwaliteit van 99 procent van de webshops bedroevend is.
Het probleem is dat ze qua structuur volledig vrij willen zijn en toch een MySQL database willen gebruiken. Dat komt waarschijnlijk omdat OpenCart en Magento al een poosje bestaan en er toen niet echt alternatieven waren. Als je nu een webshop gaat schrijven, zou ik serieus kijken naar een NoSQL database (bijvoorbeeld MongoDB of ArangoDB) gebruiken om de producten in op te slaan. En waarschijnlijk ook voor de rest van de data.quote:Op donderdag 8 mei 2014 08:33 schreef mstx het volgende:
Zolang de tabellen en kolommen maar logische namen hebben. Opencart heeft bijv. ook 115 tabellen maar daar heb ik de documentatie nog nooit voor nodig gehad. Veel simpeler kan het ook niet:
[ code verwijderd ]
Al vaak importscriptjes gemaakt om producten te importeren vanuit csv/xml/db en dat was zo gedaan.
Ter vergelijking, Magento:
[ code verwijderd ]
Op die manier doorzoek je de array wel twee keer, eerst voor in_array en daarna voor array_search.quote:Op donderdag 8 mei 2014 10:56 schreef Robuustheid het volgende:
[..]
Je zou bijvoorbeeld in PHP een library kunnen oproepen met daarin de kleuren. Maar voor de overzichtelijkheid, stop ik de kleuren in een array.
Dat zou bijv. kunnen uitzien:
[ code verwijderd ]
1 2 3 4 5 6 7 | <?php $colors = array("red", "blue", "yellow"); $index = array_search('blue', $colors); if ($index !== false) { echo $index; } ?> |
NoSQL is een prima ontsluiting van je data, maar ik zou er echt geen klant of transactie gegevens in gaan opslaan, overigens kun je binnen een magento of Opencart of welk ander product ook prima noSQL inzetten, het is gewoon een questie van je data pushen naar je noSQL server, kun je zowel realtime als in batch doen.quote:Op donderdag 8 mei 2014 21:00 schreef Light het volgende:
[..]
Het probleem is dat ze qua structuur volledig vrij willen zijn en toch een MySQL database willen gebruiken. Dat komt waarschijnlijk omdat OpenCart en Magento al een poosje bestaan en er toen niet echt alternatieven waren. Als je nu een webshop gaat schrijven, zou ik serieus kijken naar een NoSQL database (bijvoorbeeld MongoDB of ArangoDB) gebruiken om de producten in op te slaan. En waarschijnlijk ook voor de rest van de data.
Waarom geen klantgegevens en transacties in NoSQL?quote:Op vrijdag 9 mei 2014 06:45 schreef raptorix het volgende:
[..]
NoSQL is een prima ontsluiting van je data, maar ik zou er echt geen klant of transactie gegevens in gaan opslaan, overigens kun je binnen een magento of Opencart of welk ander product ook prima noSQL inzetten, het is gewoon een questie van je data pushen naar je noSQL server, kun je zowel realtime als in batch doen.
Omdat je klantegevens en andere business relationeel wilt indelen, en daar ook je queries op kunnen doen, dat gaat je bij noSQL databases niet op een makkelijke manier lukken, daarnaast heeft het ook eigenlijk helemaal niet zoveel zin omdat je juist noSQL gebruikt vanwege performance en losse structuur. Alles kan natuurlijk, maar of het slim is, is een tweede.quote:Op vrijdag 9 mei 2014 07:55 schreef Light het volgende:
[..]
Waarom geen klantgegevens en transacties in NoSQL?
En Magento en OpenCart bieden nu (voor zover ik weet) geen mogelijkheid om productgegevens in NoSQL op te slaan. In plaats daarvan komen ze met een mega-hoeveelheid tabellen in MySQL om maar een flexibele structuur aan te kunnen bieden.
quote:Op donderdag 8 mei 2014 10:31 schreef raptorix het volgende:
[..]
Naja het is alweer tijd geleden dat ik er wat mee gedaan heb, ik had veel problemen met configuratie onder windows.
Ter voorbeeld, hoe zou je dit in bijvoorbeeld PHP aanpakken?
[ code verwijderd ]
1 | $colors = preg_grep('~blue~i', $colors); |
quote:Op vrijdag 9 mei 2014 10:12 schreef Tijn het volgende:
Het gaat vooral om de eigenachappen van producten waarin je flexibel wilt zijn, toch? Dus waarom niet een column "properties" in de product tabel waar je gewoon JSON in zet?
Gewoon alles met nodejs dit datquote:Op vrijdag 9 mei 2014 10:12 schreef Tijn het volgende:
Het gaat vooral om de eigenachappen van producten waarin je flexibel wilt zijn, toch? Dus waarom niet een column "properties" in de product tabel waar je gewoon JSON in zet?
En daar gaat je normalisatie.quote:Op vrijdag 9 mei 2014 10:12 schreef Tijn het volgende:
Het gaat vooral om de eigenachappen van producten waarin je flexibel wilt zijn, toch? Dus waarom niet een column "properties" in de product tabel waar je gewoon JSON in zet?
Of xml opslaan in zo'n blob.quote:Op vrijdag 9 mei 2014 10:12 schreef Tijn het volgende:
Het gaat vooral om de eigenachappen van producten waarin je flexibel wilt zijn, toch? Dus waarom niet een column "properties" in de product tabel waar je gewoon JSON in zet?
In zo'n situatie moet je voor- en nadelen van beide mogelijkheden uitzoeken tegen elkaar afwegen. Ik vind het wat lastig om bij voorbaat een keuze te maken, maar ik zou niets op voorhand uitsluiten. Er is ook niets mis mee om een deel van de data in NoSQL te zetten en een ander deel in een relationele database.quote:Op vrijdag 9 mei 2014 08:41 schreef raptorix het volgende:
[..]
Omdat je klantegevens en andere business relationeel wilt indelen, en daar ook je queries op kunnen doen, dat gaat je bij noSQL databases niet op een makkelijke manier lukken, daarnaast heeft het ook eigenlijk helemaal niet zoveel zin omdat je juist noSQL gebruikt vanwege performance en losse structuur. Alles kan natuurlijk, maar of het slim is, is een tweede.
Tis geen PHP, maar met php moet het ook zo kunnenquote:Op donderdag 8 mei 2014 10:31 schreef raptorix het volgende:
[..]
Naja het is alweer tijd geleden dat ik er wat mee gedaan heb, ik had veel problemen met configuratie onder windows.
Ter voorbeeld, hoe zou je dit in bijvoorbeeld PHP aanpakken?
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | # Perl @kleurtjes = qw(orange blue darkBlue); foreach (grep /blue/i, @kleurtjes) { print $_ . $/; } # PHP kleurtjes = [ 'orange', 'blue', 'darkBlue' ] ; foreach (preg_grep('/blue/i', $kleurtjes) as $k) { print $k . "\n"; } |
Je hebt vast gelijk . maar het is al opgelost.quote:Op maandag 12 mei 2014 13:34 schreef KomtTijd... het volgende:
Ik zou zeggen, probeer je vraag eerst een keer in begrijpbaar Nederlands te stellen. Dan wordt het voor jezelf waarschijnlijk ook al een stuk duidelijker.
1 | php_flag engine off |
Het zal niet zo zijn dat je website van de ene op de andere dag kapot gaat Maar je wilt het liefst in een productieomgeving wel een ondersteunde versie hebben. Ik noem maar zoiets als een heartblead bug van laatst, dat je wel zeker weet dat er patches worden uitgebracht als er iets mis is.quote:Op maandag 12 mei 2014 16:10 schreef karton2 het volgende:
Op mijn ftpserver draait phpversie: 5.3.28
Nu zit ik op de wikipedia te kijken welke versies dat er zijn en zie dat 5.3 t/m juli 2014 ondersteund wordt.
Mijn vraag is nu of het kwaad kan dat mijn server 5.3 heeft en wat eventuele gevolgen kunnen zijn voor mijn website.
Welk OS draai je en hoe zit het met de support daarop? Debian doet bijvoorbeeld gewoon de security patches loslaten op bijv. de 5.3.x branch als ze die leveren.quote:Op maandag 12 mei 2014 16:10 schreef karton2 het volgende:
Op mijn ftpserver draait phpversie: 5.3.28
Nu zit ik op de wikipedia te kijken welke versies dat er zijn en zie dat 5.3 t/m juli 2014 ondersteund wordt.
Mijn vraag is nu of het kwaad kan dat mijn server 5.3 heeft en wat eventuele gevolgen kunnen zijn voor mijn website.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ php -v PHP 5.3.3-7+squeeze19 with Suhosin-Patch (cli) (built: Feb 18 2014 13:59:15) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 6.0.9 (squeeze) Release: 6.0.9 Codename: squeeze gzip -dc /usr/share/doc/php5-common/changelog.Debian.gz | less php5 (5.3.3-7+squeeze19) squeeze-security; urgency=low * [CVE-2014-1943]: Fix segmentation fault in libmagic (Closes: #739012) -- Ondřej Surý <ondrej@debian.org> Mon, 17 Feb 2014 10:52:15 +0100 |
Alleen 5.3.28 als ik http://nl3.php.net/downloads.php erbij pak. en de pagina waar 5.3.3 op staat zegt:quote:Op maandag 12 mei 2014 23:34 schreef KomtTijd... het volgende:
De 5.3 branch wordt (nu) ook door PHP nog gesupport dus da's niet zo gek.
@karton2: Als het een managed server is, is in principe de hosting partij verantwoordelijk voor je php-installatie. Waarschijnlijk zul je dan binnenkort inderdaad naar 5.4 of 5.5 geslingerd worden. Als je bang bent dat dat je applicaties breekt zou je het vast kunnen testen, maar die kans is niet zo groot hoor. Zeker niet als je een bekend en up-to-date CMS gebruikt.
Als je 'm zelf beheert zou ik gewoon zsm updaten. Nadelen heeft het niet en vroeg of laat zal het toch moeten.
quote:Unsupported Historical Releases
We have collected all the official information and code available for past PHP releases.
Bugfixes worden door Debian gebackport, waardoor je wel altijd op de versie blijft die meegeleverd werd in de distro. Daarom ook zie je PHP 5.3.3-7+squeeze19 staan als versienummer. En zolang Debian 6.0 ondersteund wordt (tot feb 2016 voor i386 en amd64) zullen ze die bugfixes blijven doen (tenzij ze expliciet aangeven dat niet te doen, er is/komt een tooltje om packages te vinden die niet meer ondersteund worden).quote:Op dinsdag 13 mei 2014 00:08 schreef slacker_nl het volgende:
[..]
Alleen 5.3.28 als ik http://nl3.php.net/downloads.php erbij pak. en de pagina waar 5.3.3 op staat zegt:
[..]
Dat zei ik toch ook in m'n allereerste reactiequote:Op dinsdag 13 mei 2014 08:25 schreef Light het volgende:
[..]
Bugfixes worden door Debian gebackport, waardoor je wel altijd op de versie blijft die meegeleverd werd in de distro. Daarom ook zie je PHP 5.3.3-7+squeeze19 staan als versienummer. En zolang Debian 6.0 ondersteund wordt (tot feb 2016 voor i386 en amd64) zullen ze die bugfixes blijven doen (tenzij ze expliciet aangeven dat niet te doen, er is/komt een tooltje om packages te vinden die niet meer ondersteund worden).
Tegenin gaan!quote:Op dinsdag 13 mei 2014 14:02 schreef Darkomen het volgende:
Klacht: ik mag geen error handler schrijven omdat dat te lang zou duren en moet als oplossing error_reporting(0) gebruiken van mn baas ...
Ik had mijn baan opgezegd.quote:Op dinsdag 13 mei 2014 14:02 schreef Darkomen het volgende:
Klacht: ik mag geen error handler schrijven omdat dat te lang zou duren en moet als oplossing error_reporting(0) gebruiken van mn baas ...
Dat heb ik al opgegeven, laat hem straks maar zoeken als er iets fout is op de site.quote:Op dinsdag 13 mei 2014 14:33 schreef Maringo het volgende:
[..]
Tegenin gaan!
Of zorgen voor een error.
Al gedaan, nog 2 maanden, ben op zoek naar iets wat een uitdaging is.quote:
1 2 3 4 | if(isset($_POST['titel'])) { echo 'titel gepost'; } |
Wat zegt array_key_exists?quote:Op vrijdag 16 mei 2014 16:52 schreef boskameel het volgende:
Ik zit al een uur te kutten met het volgende:
Op mijn eigen server werkt het wel goed, na het uploaden op een andere host niet.
Ik heb een formulier, die een aantal velden heeft. Hij post het formulier naar post.php, welke deze code bevat. Alleen pakt hij mijn postvelden niet, maar een print_r($_POST); op post.php geeft wel alle velden met inhoud die van het formulier afkomen ? Titel is gevuld, maar onderstaande if werkt niet?
[ code verwijderd ]
Iemand een idee?
Hahaha. Faalhazerij zeg ik.quote:Op dinsdag 13 mei 2014 14:02 schreef Darkomen het volgende:
Klacht: ik mag geen error handler schrijven omdat dat te lang zou duren en moet als oplossing error_reporting(0) gebruiken van mn baas ...
Of gewoon een kopie van een bounce mail terugsturenquote:Op zaterdag 17 mei 2014 11:54 schreef slacker_nl het volgende:
[..]
Hahaha. Faalhazerij zeg ik.
Overal @voorzetten, @ook @in @je @mails @naar @de @baas.
Beter issets gebruiken dan @voorzetten. Het apenstaartje negeert fouten maar veroorzaakt daarmee ook weer onverwachte situaties binnen de code.quote:Op zaterdag 17 mei 2014 11:54 schreef slacker_nl het volgende:
[..]
Hahaha. Faalhazerij zeg ik.
Overal @voorzetten, @ook @in @je @mails @naar @de @baas.
Jep , meer code neerzetten.quote:Op vrijdag 16 mei 2014 16:52 schreef boskameel het volgende:
Ik zit al een uur te kutten met het volgende:
Op mijn eigen server werkt het wel goed, na het uploaden op een andere host niet.
Ik heb een formulier, die een aantal velden heeft. Hij post het formulier naar post.php, welke deze code bevat. Alleen pakt hij mijn postvelden niet, maar een print_r($_POST); op post.php geeft wel alle velden met inhoud die van het formulier afkomen ? Titel is gevuld, maar onderstaande if werkt niet?
[ code verwijderd ]
Iemand een idee?
Ik weet niet of dit het is, maar $_POST['Titel'] is iets anders dan $_POST['titel']quote:Op vrijdag 16 mei 2014 16:52 schreef boskameel het volgende:
Ik zit al een uur te kutten met het volgende:
Op mijn eigen server werkt het wel goed, na het uploaden op een andere host niet.
Ik heb een formulier, die een aantal velden heeft. Hij post het formulier naar post.php, welke deze code bevat. Alleen pakt hij mijn postvelden niet, maar een print_r($_POST); op post.php geeft wel alle velden met inhoud die van het formulier afkomen ? Titel is gevuld, maar onderstaande if werkt niet?
[ code verwijderd ]
Iemand een idee?
daarom altijd 1 systeem aanhoudenquote:Op zondag 18 mei 2014 10:44 schreef Devolution het volgende:
Of misschien is het in het formulier op z'n Engels (title) en in je code in het Nederlands (titel). Dat soort kleine dingetjes kijk je als mens snel overheen maar PHP vergeeft je zulke foutjes niet
quote:
quote:The only reason coders' computers work better than non-coders' computers is coders know computers are schizophrenic little children with auto-immune diseases and we don't beat them when they're bad.
Ook wel een herkenbaar stukje .quote:
Skunk je antwoord op je vraag.quote:Op dinsdag 20 mei 2014 20:03 schreef Skunk-m het volgende:
Ik zit me hier op te naaien dat is niet meer normaal..
ik heb een bestand staat enkel en alleen een 1 in als ik die uitlees met file_get_contents of fread en dan if(dat bestand == "1") doe dan is antwoord altijd false.. als ik element inspecteren doe lijkt het alsof er een hele berg white space achter staat, maar die krijg je op geen mogelijkheid weg...
Weet iemand hoe ik dit doe?
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 | mysql> desc users; +-------------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+---------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(100) | NO | | NULL | | | password | varchar(80) | NO | | NULL | | | salt | varchar(40) | YES | | NULL | | +-------------------------+---------------------+------+-----+---------+----------------+ mysql> show keys from users; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | users | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ mysql> desc dealers; +------------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+------------------+------+-----+---------+-------+ | dealer_user_id | int(11) unsigned | NO | PRI | NULL | | | dealer_nvm_id | int(11) unsigned | NO | UNI | NULL | | | dealer_bedrijfsnaam | varchar(45) | YES | | NULL | | +------------------------+------------------+------+-----+---------+-------+ mysql> show keys from dealers; +---------+------------+-----------------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +---------+------------+-----------------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | dealers | 0 | PRIMARY | 1 | dealer_user_id | A | 0 | NULL | NULL | | BTREE | | | | dealers | 0 | nvmIds | 1 | dealer_nvm_id | A | 0 | NULL | NULL | | BTREE | | | | dealers | 0 | userIds | 1 | dealer_user_id | A | 0 | NULL | NULL | | BTREE | | | +---------+------------+-----------------------+--------------+----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ mysql> desc autos; +--------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+------------------+------+-----+---------+----------------+ | auto_id | int(11) | NO | PRI | NULL | auto_increment | | auto_user_id | int(11) unsigned | NO | UNI | NULL | | | auto_dealer_nvm_id | int(11) unsigned | NO | UNI | NULL | | | auto_kenteken | varchar(45) | YES | | NULL | | +--------------------+------------------+------+-----+---------+----------------+ mysql> show keys from autos; +-------+------------+----------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | autos | 0 | PRIMARY | 1 | auto_id | A | 0 | NULL | NULL | | BTREE | | | | autos | 1 | userIds | 1 | auto_user_id | A | 0 | NULL | NULL | | BTREE | | | | autos | 1 | nvmIds | 1 | auto_dealer_nvm_id | A | 0 | NULL | NULL | | BTREE | | | +-------+------------+----------+--------------+--------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ UNIQUE KEY `uc_users_groups` (`user_id`,`group_id`), KEY `fk_users_groups_users1_idx` (`user_id`), KEY `fk_users_groups_groups1_idx` (`group_id`), CONSTRAINT `fk_users_groups_groups1` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT `fk_users_groups_users1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 | |
1 2 3 4 | ALTER TABLE `autos` ADD CONSTRAINT `user_id_link` FOREIGN KEY (`auto_user_id`) REFERENCES `testdb`.`users`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; MySQL said: Documentation #1452 - Cannot add or update a child row: a foreign key constraint fails (`testdb`.`#sql-f714_46d`, CONSTRAINT `user_id_link` FOREIGN KEY (`auto_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION) |
Mannen...quote:Op vrijdag 23 mei 2014 14:19 schreef Darkomen het volgende:
Verder heeft niemand hier verstand van relaties... :|
quote:Op dinsdag 27 mei 2014 16:28 schreef WyriHaximus het volgende:
Het blijft wel lekker angstvallig stil. Nou moet ik wel zeggen dat een compleet eigen communicatie protocol uitwerken aantoont hoe lastig communiceren is en dus ook relaties zijn.
Wat een faalquote:Op woensdag 28 mei 2014 13:43 schreef Sitethief het volgende:
http://computerworld.nl/d(...)enen-om-php-te-haten
Soms denk ik dat mensen PHP bashen alleen maar omdat het bashen. Maar deze auteur gaat wel heel kort door de bocht...
Je hoeft PHP niet te bashen, dat doet het zelfquote:Op woensdag 28 mei 2014 13:43 schreef Sitethief het volgende:
http://computerworld.nl/d(...)enen-om-php-te-haten
Soms denk ik dat mensen PHP bashen alleen maar omdat het bashen. Maar deze auteur gaat wel heel kort door de bocht...
Ben het met 4, 6 en 8 eens.quote:Op woensdag 28 mei 2014 13:43 schreef Sitethief het volgende:
http://computerworld.nl/d(...)enen-om-php-te-haten
Soms denk ik dat mensen PHP bashen alleen maar omdat het bashen. Maar deze auteur gaat wel heel kort door de bocht...
Mensen die PHP verkeerd gebruiken bashen bedoel je...quote:Op woensdag 28 mei 2014 13:53 schreef slacker_nl het volgende:
[..]
Je hoeft PHP niet te bashen, dat doet het zelf
Nee hoor. PHP is gewoon kut, laten we eerlijk zijn.quote:Op woensdag 28 mei 2014 15:16 schreef Sitethief het volgende:
Mensen die PHP verkeerd gebruiken bashen bedoel je...
Gecombineerd met Smarty en OO PHP kan het nog best aardig werken. Laatste paar weken toch wat meer vertrouwen in PHP gekregen. Een goed werkend framework eromheen bouwen.quote:Op woensdag 28 mei 2014 18:59 schreef slacker_nl het volgende:
[..]
Nee hoor. PHP is gewoon kut, laten we eerlijk zijn.
Gebruik dan iets moderns zoals Twig en een goed up-to-date framework er bij. Alles inladen via composer en gaan met die zooi .quote:Op woensdag 28 mei 2014 19:02 schreef cablegunmaster het volgende:
[..]
Gecombineerd met Smarty en OO PHP kan het nog best aardig werken. Laatste paar weken toch wat meer vertrouwen in PHP gekregen. Een goed werkend framework eromheen bouwen.
Natuurlijk is het niet perfect, maar ze zijn wel goed bezig in de laatste paar versies om nare dingen aan te pakken en goeie nieuwe dingen toe te voegen.quote:Op woensdag 28 mei 2014 18:59 schreef slacker_nl het volgende:
[..]
Nee hoor. PHP is gewoon kut, laten we eerlijk zijn.
Ik gebruik PHP te weinig om daar wat zinnigs over te kunnen zeggen.quote:Op donderdag 29 mei 2014 19:32 schreef Tijn het volgende:
[..]
Natuurlijk is het niet perfect, maar ze zijn wel goed bezig in de laatste paar versies om nare dingen aan te pakken en goeie nieuwe dingen toe te voegen.
Das ook weer waar. Maarja, omdat het gebruikt wordt wilt ook niet alles zeggen.quote:Er zijn twee soorten talen: talen waarover wordt geklaagd en talen die niet worden gebruikt.
Dankje die gaat linea recta richting mijn baasquote:Op donderdag 29 mei 2014 20:26 schreef slacker_nl het volgende:
[..]
Ik gebruik PHP te weinig om daar wat zinnigs over te kunnen zeggen.
[..]
Das ook weer waar. Maarja, omdat het gebruikt wordt wilt ook niet alles zeggen.
https://jeena.net/images/2012/PHP-The-Good-Parts.pdf
PHP heeft een hele slechte basis en wordt nu voor totaal iets anders gebruikt dan waar het ooit voor gemaakt is. Als je dit ten tijde van PHP 3, 4 of zelfs toen 5 net uit was had gezegd, had je helemaal gelijk gehad. PHP was toen echt heel erg slecht. Het is nog steeds slecht, maar ze proberen nu in elk geval wel serieus de rotste appels eruit te halen en ze zijn bezig om te zorgen dat het langzaam maar zeker een moderne, maar ook veiligere taal aan het worden is. Bovendien zijn er onwijs veel goede tools ontstaan (frameworks als Laravel en Symfony2, depency managers als Composer, template engines als Twig bijvoorbeeld) wat het gebruik van PHP ook een stuk beter te doen maakt. Wat dat betreft zijn de dark ages van mysql_real_escape_string(), register_globals en magic quotes wel voorbij.quote:Op donderdag 29 mei 2014 20:26 schreef slacker_nl het volgende:
[..]
Ik gebruik PHP te weinig om daar wat zinnigs over te kunnen zeggen.
Behoorlijk waardeloos artikel, helemaal voor een artikel dat slechts enkele dagen oud is.quote:Op woensdag 28 mei 2014 13:43 schreef Sitethief het volgende:
http://computerworld.nl/d(...)enen-om-php-te-haten
Soms denk ik dat mensen PHP bashen alleen maar omdat het bashen. Maar deze auteur gaat wel heel kort door de bocht...
quote:Op donderdag 29 mei 2014 20:26 schreef slacker_nl het volgende:
https://jeena.net/images/2012/PHP-The-Good-Parts.pdf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class person { var $name; function set_name($new_name) { $this->name = $new_name; } function get_name() { return $this->name; } } $stefan = new person(); $jimmy = new person; $stefan->set_name("Stefan Mischook"); $jimmy->set_name("Nick Waddles"); echo "Stefan's full name: ".$stefan->get_name(); echo "Nick's full name: ".$jimmy->get_name(); |
Doen allebei precies het zelfde. De haakjes heb je pas echt nodig als je argumenten meegeeft aan de constructor.quote:Op zondag 1 juni 2014 16:00 schreef Robuustheid het volgende:
UIt een PHP tutorial:
[ code verwijderd ]
Waarom moet bij de instantatie van var Stefan, de haakjes bij person gezet worden, en bij jimmy niet? Beide werken gewoon. Is het niet handiger om ze weg te laten?
Ik zou ze niet weglaten, het maakt het duidelijker wat er gebeurt als je de haakjes toevoegt.quote:Op zondag 1 juni 2014 16:00 schreef Robuustheid het volgende:
Is het niet handiger om ze weg te laten?
Het mag allebei. Maar als je argumenten mee wilt geven, moet je wel haakjes gebruiken. Dus ik zou het gewoon altijd doen.quote:Op zondag 1 juni 2014 16:00 schreef Robuustheid het volgende:
UIt een PHP tutorial:
[ code verwijderd ]
Waarom moet bij de instantatie van var Stefan, de haakjes bij person gezet worden, en bij jimmy niet? Beide werken gewoon. Is het niet handiger om ze weg te laten?
1 2 3 4 5 6 7 8 9 10 | <?php $mysqli = base::open_connection(); $stmt = $mysqli->prepare("SELECT first_name, insertion FROM user WHERE user_id = ?"); $id = 11; $stmt->bind_param("i", $id); $stmt->bind_result($a, $b); $stmt->execute(); $stmt->fetch(); var_dump($a . ", " . $b); ?> |
quote:Op dinsdag 3 juni 2014 13:56 schreef esv7 het volgende:
Is er een mogelijkheid om hetgeen dat je ophaalt met een prepared mysqli statement ophaalt, in een array te stoppen? Ik moet nu met bind_result() evenveel argumenten meegeven als dat er kolommen aan data wordt opgehaald.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $mysqli = base::open_connection(); $stmt = $mysqli->prepare("SELECT first_name, insertion FROM user WHERE user_id = ?"); $id = 11; $stmt->bind_param("i", $id); $stmt->bind_result($a, $b); $stmt->execute(); $rows = array(); while ( $stmt->fetch() ) { $rows[] = array( $a, $b ); } var_dump($a . ", " . $b); ?> |
Bedankt voor het snelle antwoord .quote:
fetchAll(\PDO::FETCH_ASSOC) dan toch?quote:Op dinsdag 3 juni 2014 14:23 schreef KomtTijd... het volgende:
gebruik PDOstatement::fetchall().
Geen idee hoe je dat met mysqli zou doen.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |