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 conceptquote: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 gebeurenquote: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 boyquote: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 bijquote: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 WattAlleen 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 meterkastquote: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 meterkastDraait 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 gaatquote: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 codequote: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 ookquote: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 codeheb ik een keer mee mogen maken.
ja dat is hemquote: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 hemik 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:
Helpik 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
quote: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?
Mooiquote: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:
[..]
MooiDan 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 krijgenquote: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 krijgenMySQL 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.
quote: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 spammenquote:
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 vanquote: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 vanIk 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
Beidequote: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:
[..]
BeideIn 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?
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...
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 hoorik 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 nietmaar 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 nietmaar 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.The people who lost my respect will never get a capital letter for their name again.
Like trump...
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.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |