Je hoeft er m.i. niet per se OOP van te maken, maar het helpt wel (ik ben er wel een voorstander van). Maar je zou wel aparte functies kunnen maken, dat maakt je script makkelijker testbaar. Je kan dan elke functie testen op de werking. Dat lukt niet in je huidige model.quote:Op zondag 17 november 2013 13:30 schreef Chandler het volgende:
Thanks voor jullie inhoudelijke reacties, de installer heeft een datablock en een script onderdeel, het script onderdeel ga ik niet oop maken, zou kunnen maar zie daar zelf het nut niet van in. Een keuze in database systemen ben ik zeker voor en gaat ook zeker verwerkt worden in het script en qua unset moet ik inderdaad nog wel het een en ander aanpassen... oh 2x case 7 had ik blijkbaar over het hoofd gezien... ooeps.. zelfde als set_time_limit, die heb ik gebruikt om te testen, iets wat bij kleine 'installers' echt niet nodig is maar bij installers van 30mb misschien wel, daar moet ik het allemaal nog op testen.
Paar vragen:
- Waarom stappen verminderen? zoveel stapjes zijn het niet? kijk eens naar programma's die je onder windows installeert? die hebben vaak ook vele stappen..
- Waarom OOP? zoveel code zit er niet in zeg maar... op zich zou't wel gemakkelijk zijn als ik er een ander ontwerp omheen wil gooien!
- Andere tips?
Oh de quit button is domweg bedoeld om de installer te resetten... je begint weer bij het begin want echt 'afsluiten' van het script zoals een programma gaat niet werken... tenzij ik window.close() ga gebruiken
thanks voor inhoudelijk feedback, maar hoe voelde de installer verder aan?
1 2 3 4 5 6 7 8 9 | $array = array ( 'ding' => .. , 'dat' => .. , 'zus' => .. , 'zo' => .. ); # zou ik herschrijven naar: $array = array( ding => .., dat => .., zus => .., zo => .., ); |
Mijn OOP is extreem brak, maak daarin vaak fouten en leer daar pas van als iemand er wat over zegt (mijn manier van leren). Ik zal eens kijken wat ik allemaal in functies kan stoppen wat er nu nog niet inzit...quote:Op zondag 17 november 2013 13:36 schreef slacker_nl het volgende:
Je hoeft er m.i. niet per se OOP van te maken, maar het helpt wel (ik ben er wel een voorstander van). Maar je zou wel aparte functies kunnen maken, dat maakt je script makkelijker testbaar. Je kan dan elke functie testen op de werking. Dat lukt niet in je huidige model.
Klopt, daarin heb je totaal gelijk alleen hoeft een gemiddelde gebruiker van dit script niets met de data, zelfde als jij niets moet met de inhoudt van een installer anders dan de installer zijn werk laten doen... dus de data hoeft er niet mooi uit te zien (data block) maar qua scripten werkt het zeker beter...quote:Verder zou ik wel iets aan je code conventies gaan doen:
Dat leest en edit prettiger.
Het gaat me erom dat als je later in dat script kijkt dat het makkelijk edit en leest. Dat de gebruiker er niet in hoeft te lezen.. maar andere coders wel en die wil je wel helpen met schone, zelf-gedocumenteerde code.quote:Op zondag 17 november 2013 14:19 schreef Chandler het volgende:
[..]
Mijn OOP is extreem brak, maak daarin vaak fouten en leer daar pas van als iemand er wat over zegt (mijn manier van leren). Ik zal eens kijken wat ik allemaal in functies kan stoppen wat er nu nog niet inzit...
[..]
Klopt, daarin heb je totaal gelijk alleen hoeft een gemiddelde gebruiker van dit script niets met de data, zelfde als jij niets moet met de inhoudt van een installer anders dan de installer zijn werk laten doen... dus de data hoeft er niet mooi uit te zien (data block) maar qua scripten werkt het zeker beter...
verder nog grote php fouten gezien? nee toch?
1 2 3 4 | $installer = new InstallerClass( # named arguments ); $installer->run(); |
Je moet altijd je documentatie goed op orde hebben. Maar dat staat los van de manier van code. Al helpt het ook dat je code zichzelf uitlegt. Maar je functies moeten gewoon gedocumenteerd zijn.quote:Op zondag 17 november 2013 14:49 schreef Chandler het volgende:
Ook met OOP moet je je inlezen in code want ->run() zegt ook compleet niets, want wat gebeurd er in al die functies? dus denk dat documentatie van het script zelf stukken belangrijker is.. Al zou ik het wel leuk vinden om er een OOP versie van maken maken dat ik zo de schil (layout/vormgeving) on the fly kan aanpassen!
Op m'n werk is het moeten. Want anders zegt de testsuite: je hebt de pod niet op orde en dan falen de tests.quote:Op zondag 17 november 2013 16:19 schreef Chandler het volgende:
moeten is onzin, handig true; zal ik ook zeker gaan doen, maar blijkbaar vinden jullie het idee toch best leukis een vervolg op een heel oud projectje (php2hex
)
Testbaarheid.quote:Op zondag 17 november 2013 18:10 schreef Chandler het volgende:
Waarom in aparte files? leg dat eens uit?
Hoe heb je die code getest?quote:Op maandag 18 november 2013 01:09 schreef Chandler het volgende:
Zo werk ik inderdaad ook al, alle code is gewoon al getest (toen nog niet op meerdere platformen maar goed) met de losse modules die ik toen werkend met elkaar heb verbonden in het huidige script. Ik zal vannacht nog eens naar wat puntjes van het script kijken (heb toch nachtdienst, dus alle tijd)
Nog goede suggesties voor een test-suite?quote:Op zondag 17 november 2013 16:21 schreef slacker_nl het volgende:
[..]
Op m'n werk is het moeten. Want anders zegt de testsuite: je hebt de pod niet op orde en dan falen de tests.
Overigens zeg ik niks over je idee, want ik zou je script en je installer in aparte files frotten, maar dat is mijn mening.
Onder PHP, ik ken er geen. Onder Perl heb je prove.quote:Op maandag 18 november 2013 13:16 schreef HalveZware het volgende:
[..]
Nog goede suggesties voor een test-suite?
Waarom in hemelsnaam een NoSQL database voor een loginsysteemquote:Op maandag 18 november 2013 13:52 schreef RetRy32 het volgende:
Sjooooooooooow ik was aan het kloten met dat MongoDB gebeuren, ik heb dus een Auth template voor mijzelf gemaakt, is wel een beetje rommelig en comments heb ik in het Engels gezet btw...
Voor de liefhebbers...
https://anonfiles.com/file/9e49f9c2059cdd78233e284435781ffa
En dat MongoLab remote hosting is gewoon gratis tot 500MB
[ afbeelding ]
Waarom niet?quote:Op maandag 18 november 2013 14:35 schreef KomtTijd... het volgende:
Waarom in hemelsnaam een NoSQL database voor een loginsysteem
Het is een template, en er staat ook nog een comment erover erbij manquote:Op maandag 18 november 2013 14:35 schreef KomtTijd... het volgende:
[..]
...en zie ik daar MD5 password hashes?,
,
!!!!!!!!!
Normaliter wil je behoorlijk joinen met je usersquote:
Daar heb ik niet naar gekeken. Maar MD5 gebruiken voor passwordhashes zou gewoon bij wet verboden moeten zijn.quote:[..]
Het is een template, en er staat ook nog een comment erover erbij man
Want met no SQL databases zou je niet kunnen joinen? Ik bel gelijk even Twitter en Facebook dat hun architectuur niet klopt!quote:Op maandag 18 november 2013 15:16 schreef KomtTijd... het volgende:
[..]
Normaliter wil je behoorlijk joinen met je users
Het kan, maar er is geen reden om het jezelf extra moeilijk te maken.quote:Op maandag 18 november 2013 15:22 schreef raptorix het volgende:
[..]
Want met no SQL databases zou je niet kunnen joinen? Ik bel gelijk even Twitter en Facebook dat hun architectuur niet klopt!
Waarom zou het moeilijk zijn? Zo moeilijk is het niet om een simpele join te maken in MongoDbquote:Op maandag 18 november 2013 15:24 schreef KomtTijd... het volgende:
[..]
Het kan, maar er is geen reden om het jezelf extra moeilijk te maken.
En vervolgens heb je die classes en functies naar een ander bestand gekopieerd en dat is je installer? Da's dus niet de code die je getest hebt, da's een kopie van die code. Dat maakt in zoverre verschil dat je aanpassingen twee keer moet doen als je ze ook wilt testen.quote:Op maandag 18 november 2013 10:18 schreef Chandler het volgende:
Gewoon 1 scriptje met daarin de class/functie en daaronder het test gedeelte?
Heb je al iets aan je formatting gedaan?quote:Op maandag 18 november 2013 19:52 schreef Chandler het volgende:
Ja en nee, de installer is een 'front' voor de data... de data en 'front' worden samen gevoegd in het script dat de installer (aan) maakt.
Qua testen heb je gelijk, maar vaak maak ik bv een class/functie en die test ik ook gewoon in het zelfde bestand van de class/functie waarbij ik dan gewoon andere classes/functies include (voor mijn mvc heb ik per functie een apart php bestand, altijd gemakkelijk met debuggen). Dus bijna het zelfde.. In dit project specifiek moet ik inderdaad dan zaken twee keer moet herhalen.
Ik zal eens naar PHPUnit kijken!
Maar heb je voor dit projectje nog suggesties? ideeën? verbeter punten?
Alleen het typen in Sublime vind ik toch ietsiepietsie prettigerquote:
Waar ligt het aan dat het daarin fijner is?quote:Op maandag 18 november 2013 20:51 schreef RetRy32 het volgende:
[..]
Alleen het typen in Sublime vind ik toch ietsiepietsie prettiger
//Feit: ietsiepietsie is een Nederlands woord//
Ik vind die autofill echt tof en voor de rest is het denk ik gewenning.quote:Op maandag 18 november 2013 21:19 schreef Crutch het volgende:
[..]
Waar ligt het aan dat het daarin fijner is?
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?quote:Op maandag 18 november 2013 19:54 schreef RetRy32 het volgende:
[..]
Heb je al iets aan je formatting gedaan?
Protip: PHPStorm, werkt geweldig met PHPunit trouwens.
1 2 3 4 5 6 7 8 9 10 11 | <?php foreach (array("tables", "tableData", "files" => "files") AS $block => $bTest) { if (isset(${"$block"}, ${"$block" . "CRC"})) { $tested++; if (!testHash(${"$block" . "CRC"}, ${"$block"}, $bTest)) { $_SESSION['installer']['errors'][] = $block . ' block damaged'; $errors++; } } } ?> |
Da's perfect imo, nu ik je code eigenlijk bekijk is er niks mis met de netheid.quote:Op dinsdag 19 november 2013 08:55 schreef Chandler het volgende:
[..]
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?
gelijk een andere vraag; is dit netjes? of moet/kan het anders?
[ code verwijderd ]
quote:Op dinsdag 19 november 2013 16:41 schreef ursel het volgende:
Ik schrijf de 'as' in een foreach altijd met kleine letters.
Je mixt een indexed met een associative array. Alhoewel het technisch kan is zoiets meestal een recept voor gezeik. Kies het een of het ander, niet mengen.quote:Op dinsdag 19 november 2013 08:55 schreef Chandler het volgende:
[..]
Hoe bedoel je met formatting? de stijl waarop ik mijn code schrijf? pear style?
gelijk een andere vraag; is dit netjes? of moet/kan het anders?
[ code verwijderd ]
Hahaha, zal ongetwijfeld mede mogelijk gemaakt zijn door mijn schrijf style!quote:Op dinsdag 19 november 2013 16:21 schreef RetRy32 het volgende:
[..]
Da's perfect imo, nu ik je code eigenlijk bekijk is er niks mis met de netheid.
Was een illusie
SUPER LOL, eigenlijk moet AS ook met kleine letters, maar schrijf het al jaren als AS (zal wel uit mijn basic tijd komen...) oh nu ik het mij bedenk is het waarschijnlijker dat ik het van SQL heb overgenomen (daar schrijf ik functies altijd in hoofdletters en variabelen/tabellen/velden etc in kleine... ) maar goed... het verduidelijkt wel de leesbaarheid ($vars as $var1 => $var2) is minder leesbaar als ($vars AS $var1 => $var2) ofzo.quote:Op dinsdag 19 november 2013 16:41 schreef ursel het volgende:
Ik schrijf de 'as' in een foreach altijd met kleine letters. Eigenlijk nog nooit met hoofdletters gezien, bhelave in Queries.
Ik heb dit vandaag even in elkaar geflanst van een groter stukje if else statements... scheelt maar 3/4 aan regels.quote:Op dinsdag 19 november 2013 16:51 schreef Boze_Appel het volgende:
Je mixt een indexed met een associative array. Alhoewel het technisch kan is zoiets meestal een recept voor gezeik. Kies het een of het ander, niet mengen.
Wat je zegt is logisch, maar niet voor mijn code.quote:Op dinsdag 19 november 2013 17:36 schreef KomtTijd... het volgende:
Ik moest er 5 keer naar kijken voordat ik begreep wat er nu gebeurde.
En ik zou zeggen dat je die vars direct in een object zet waar je doorheen fietst, mocht je ze stuk voor stuk willen checken. Of je checkt ze op het moment van aanmaken.
1 2 3 4 | <?php foreach (array("tables", "tableData", "files" => "files") AS $block => $bTest) { } ?> |
1 2 3 4 5 | <?php $array = array("tables"=>"tableData", "files"=>"files"); foreach($array AS $block => $bTest){ } ?> |
1 2 3 4 | <?php $explodeIp = explode ( ".", "185.002.241.100" ); $bierentieten = ltrim ( $explodeIp[0], "0" ) . "." . ltrim ( $explodeIp[1], "0" ) . "." . ltrim ( $explodeIp[2], "0" ) . "." . ltrim ( $explodeIp[3], "0" ); ?> |
Het scriptje draait maar 1 keer, het wordt in de database gestopt en daarna zien we de data nooit meer terugquote:
O oke.quote:Op woensdag 20 november 2013 13:57 schreef wobbel het volgende:
[..]
Het scriptje draait maar 1 keer, het wordt in de database gestopt en daarna zien we de data nooit meer terug
Beunhaasquote:Op woensdag 20 november 2013 13:57 schreef mstx het volgende:
[..]
O oke.Er zat ook een foutje in m'n script.
![]()
1 2 3 4 5 | <?php $arr = explode('.',$ip); $arr = array_map(function($a){return (int) $a;}, $arr); $ip = implode('.',$arr); ?> |
Wat is er mis met array_map('intval', $arr); ?quote:Op woensdag 20 november 2013 14:42 schreef KomtTijd... het volgende:
[ code verwijderd ]
Niet IPv6 proof uiteraard.
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.quote:Op woensdag 20 november 2013 13:45 schreef wobbel het volgende:
Oke, long2ip ( ip2long ( "185.002.241.100") ) werkt niet, maar ik zit nog wel met een probleem.
Ik heb "185.002.241.100" aangeleverd gekregen (wel 1503025325 keer) en ik moet alle voorloopnullen verwijderen, in dit geval moet het dus 185.2.241.100 worden. Is daar een manier voor zonder eerst alles te exploden enzo?
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 | { # Stolen from Regexp::IPv6 (to prevent adding a dependency for BSD machines) my $sub = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))'; my $IPv4 = "$sub\\.$sub\\.$sub\\.$sub"; my $G = "[0-9a-fA-F]{1,4}"; my @tail = ( ":", "(:($G)?|$IPv4)", ":($IPv4|$G(:$G)?|)", "(:$IPv4|:$G(:$IPv4|(:$G){0,2})|:)", "((:$G){0,2}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,3}(:$IPv4|(:$G){1,2})|:)", "((:$G){0,4}(:$IPv4|(:$G){1,2})|:)" ); my $IPv6 = $G; $IPv6 = "$G:($IPv6|$_)" for @tail; $IPv6 = qq/:(:$G){0,5}((:$G){1,2}|:$IPv4)|$IPv6/; $IPv6 =~ s/\(/(?:/g; $IPv6 = qr/\A(?:$IPv6|::)\Z/; $IPv4 = qr/\A$IPv4\Z/; use constant CHECK_IP => sub { my $ip = shift; # End with / we are not a valid IP return 0 if ($ip =~ /\/\s*$/); my $mask; ($ip, $mask) = split(/\//, $ip); # If you supply a /32 you supply a single ip, we allow this if (defined $mask && ( $mask !~ /^\d+$/ || $mask != 32)) { return 0 ; } return ($ip =~ m/$IPv4/) ? 1 : 0; }; use constant CHECK_IPV6 => sub { my $range = shift; ($range) = split(/\//, $range); return ($range =~ m/$IPv6/) ? 1 : 0; }; } |
Voetbalquote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.![]()
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ondanks je edit moet ik toch een beetje huilen van binnen.quote:Op maandag 18 november 2013 15:26 schreef raptorix het volgende:
[..]
Waarom zou het moeilijk zijn? Zo moeilijk is het niet om een simpele join te maken in MongoDb
Edit: ik bedoel dit zul je wel buiten MonngoDB moeten doen met een extra actie.
Overigens niet echt nodig, in no Sql hoef je je niet aan relationele principes te houden, sterker nog het is zelfs erg niet de bedoeling
Omdat?quote:Op donderdag 21 november 2013 02:37 schreef TwenteFC het volgende:
[..]
Ondanks je edit moet ik toch een beetje huilen van binnen.
Als je Wordpress kennis hebt kun je dat daar toch realiseren.quote:Op woensdag 20 november 2013 12:01 schreef Michaelvanb het volgende:
Iemand interesse om een voetbal transfer nieuws website (engelstalig) op te starten?
Ik heb een heel mooi plan liggen, alleen ik heb onderschat hoe moeilijk het is om een team/speler database te maken als je nog nooit met php/mysql hebt gewerkt en alleen wordpress kennis hebt.![]()
50/50 split waarbij ik zorg voor content, seo, 't plan etc en de evt. partner helpt mee met technische gedeelte. theme of psd zijn al redelijk klaar. EMD domeinnaam met 200k exact search
DM voor meer info
Ach, het is slechts 1 keerquote:Op woensdag 20 november 2013 18:26 schreef slacker_nl het volgende:
[..]
Dat moet je gewoon weigeren, dat voldoet niet aan de IPv4 syntax.
'127.000.000.001' is not a valid ipv4 address.# Tests were run but no plan was declared and done_testing() was not seen.
Dit is de Perl-code om IPv4/IPv6 syntax te valideren:
[ code verwijderd ]
Dit, en je kan altijd even "EXPLAIN" uitvoeren om te kijken wat er allemaal gebeurt.quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!quote:Op donderdag 28 november 2013 20:06 schreef KomtTijd... het volgende:
Aangezien WHERE id = 25 al 100% selectief is zal de rest alleen maar ballast zijn en waarschijnlijk genegeerd worden of anders de query vertragen.
run beide queries 10000 keer ofzo en je weet het.
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?quote:Op donderdag 28 november 2013 18:25 schreef TwenteFC het volgende:
Iemand hier die gebruik maakt van Laravel?
Ik wil een child toevoegen aan de parent model en deze opslaan, alleen pakt hij de parentId niet omdat die waarde na het opslaan van de parent verspringt naar 1.
Code:
http://paste.laravel.com/1aMv
Het lijkt je handig met als reden dat het niets toevoegtquote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
->push is voor bestaande objecten, heb het ondertussen al opgelost door heel lelijk een AI veld toe te voegen en daar op te koppelen.quote:Op donderdag 28 november 2013 20:31 schreef Crutch het volgende:
[..]
Heb je in de database gekeken of je model überhaupt wordt opgeslagen?
En relationships sla je op met ->push()
Je kan ook even een grote batch insert doen om er mee te testen natuurlijk.quote:Op donderdag 28 november 2013 20:31 schreef xaban06 het volgende:
[..]
Database is nog niet gevuld (lees: leeg), script is nog niet af. Maar wat je zegt kan wel inderdaad met demo data. Anyways, thanks!
LIMIT 1 lijkt mij ook handig, niet? id is namelijk uniek.
"het beste", mijn inziens is het vrij persoonlijk wat voor jou het beste is.quote:Op donderdag 28 november 2013 20:41 schreef RetRy32 het volgende:
Uhm, hey guys wat vinden jullie het beste framework voor PHP?
Ik heb nou al tering veel artikelen gelezen, maar ben nog niet echt wijzer...
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.quote:Op donderdag 28 november 2013 20:38 schreef KomtTijd... het volgende:
[..]
Het lijkt je handig met als reden dat het niets toevoegt
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.quote:Op donderdag 28 november 2013 20:50 schreef xaban06 het volgende:
[..]
Ik dacht dat het wel meerwaarde had, dat het namelijk stopt met verder zoeken wanneer er een match gevonden is. Zonder LIMIT doorzoekt hij alle records dacht ik.
Is het nietquote:Op donderdag 28 november 2013 20:53 schreef KomtTijd... het volgende:
[..]
Niet als je id Unique is, waar ik wel even vanuit ging natuurlijk.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |