Posts by Patrick

    Met dank aan koen:
    Criminals


    Live demo.


    Login admin:
    admin / admin1234


    Login user:
    user / user1234


    Daarnaast diverse fixxes + een brand nieuwe salt oplossing voor wachwoorden in plaats van sha1(). De salt oplossing maakt gebruik van de hash_equals functie (versie 5.6.0 van php) echter mocht je die niet hebben, er zit een custom made functie in voor de gene die lager dan 5.6.0 draaien :-).


    Wellicht als er nog steeds animo is ga ik de layout die frenzo zo vriendelijk was om te leveren intergreren als default layout. Uiteraard laat ik dan de oude blue skin wel als secondary skin bestaan :)


    edit voor de gene die niet kunnen wachten:
    Screenshot by Lightshot

    Nadeel van smarty is dat het geen namespaces ondersteunt en het ook niet gaat doen. Waardoor je met een namespaced PHP applicatie niet heel ver komt. Enige oplossing als je echt smarty wilt gebruiken is overal zelf de namespace aan gaan toevoegen.


    Je kan ook naar andere opties uitwijken die wel mogelijkheden hebben met namespace support:


    Daarnaast is het ook zo dat smarty een beetje "zwak" & "oud" is vergeleken met bovengenoemde 2 parsers, zeg niet dat smarty slecht is! (Gebruik het zelf ook met liefde en plezier)

    Waddduppppp allemaal,


    Voor dat jullie gelijk allemaal denken, hé heb je er weer één die een criminals wilt herprogrammeren en dat gaat hem toch niet lukken.... maar wacht! Ik post het topic pas als ik het ook af heb :-). Dus bij deze is het ook echt al een werkende versie voor jullie, voor noppes.


    Na 4 flessen rode wijn, 5 lange nachten / tussen league of legends potjes door / tijdens mijn normale werk & wat al nog niet meer... is criminals blue revamped van heden beschikbaar voor iedereen! Maar wat houd het nu in?

    • Orginele layout is gebruikt, dus verwacht geen web 2.0
    • Orginele opties zijn gebleven + onnodige TE gebugte functies zijn er uit gehaald.
    • Geen nieuwe opties bij gemaakt het ging echt om het herprogrammeren.
    • OOP? Weg ermee! Ik wil dat het voor iedereen te begrijpen is
    • PDO? Nope, mysqli werkt perfect en is veel makkelijker mee in te stappen
    • Template parser? Ja die dan weer wel, smarty is er gebruikt

    Functies die niet over getild zijn naar deze versie:

    • Clan war > deze was zou uit balans dat ik er momenteel geen goede algoritme voor kon verzinnen dat het wel goed werkte, echter rest van de clan functies zijn wel over gezet.
    • Omni log > Nope momenteel niet overgezet, een algemene logging functie komt er wellicht voor terug
    • Cronjobs draaien vanuit een php bestand, nope wil je cronjobs dan stel je deze lekker in zoals het hoort ;) (No offence)


    Screens layout (blue):
    Hq: Screenshot by Lightshot
    Berichten: Screenshot by Lightshot
    Shop: Screenshot by Lightshot


    Screen layout (begangster):
    Hq: http://prntscr.com/5nl9ti
    Berichten: Screenshot by Lightshot
    Shop: Screenshot by Lightshot


    Live demo (Jazeker ;) uiteraard!):
    Criminals


    Waar kan je hem vinden?
    https://github.com/NoxxieNl/Criminals


    Komen er updates?
    Geen idee, bij animo wellicht, daarnaast bug fixxes zal ik sowieso wel oppakken :-).


    Waarom doe ik dit?
    Heel simpel, men stapt nog steeds de programmeer wereld in via een criminals programmering en de zwaar outdated versies is een slechte instap hiervan. Met deze versie hoop ik dat de standaard criminals source weer een beetje naar niveau wordt getild.

    Zover ik kan zien wil je alle cijfers + decimalen laten mee wijzen. In notepad++:


    doe ctrl + h in notepad++ en daarna het volgende:


    • Bij "zoeken naar": (')?+([0-9]+)(\.([0-9]+))?+(')?
    • Bij "vervangen door": $2$3
      • Waarom $2 en $3 en niet $1 en $2? Om dat $1 is gevuld met de aanhalingsteken en $2 de eerste expressie van [0-9]+ is en $3 de expressie van \.[0-9]+ bevat. (en dus de . bevat indien deze aanwezig is)
    • Bij zoekmethode: "Regulier expressie" selecteren.

    En dan de button "Alle vervangen" aan klikken en done :-).


    Visueel:
    http://i59.tinypic.com/2dl7m6q.jpg


    En mocht je alleen voor round integers willen:
    doe ctrl + h in notepad++ en daarna het volgende:

    • Bij "zoeken naar": '+([0-9]+)+'
    • Bij "vervangen door": $1
      • $1 wordt hier aangegeven omdat de enige zoek expressie [0-9]+ is
    • Bij zoekmethode: "Regulier expressie" selecteren.

    En dan de button "Alle vervangen" aan klikken en done :-).

    Draai het dan eens om:


    PHP
    <?php
    require '/.../.../.../.../.../config.php';
    ?>
    <title>{$title} - {$motto}</title>


    Je kan niet iets gebruiken als het nog niet is aangemaakt. Dus moet je config boven de <title>


    Wat hij zegt klopt wel.


    Well je roept de config pas later op, dat dat je die dingen echo'ed, altijd eerst iets include/aanmaken en daarna echo doen


    Hoe kan je iets echo'en als de variabel nog niet eens gedefinieerd is? Uberhaupt met een beetje error level krijg je dan nog eens een foutmelding dat de variabel niet gedefineert is. Daarnaast sowieso dit systeem krijgt een template parser werkt niet uit of de box met {$title} & {$motto} ten eerste staat het al niet in php. Ten tweede wat is de nut van een class als je direct de variabels aan roept en niet de gene uit een class?



    Probeer het eens met:


    ongetest, dus er kan wel wat fout zijn.

    Hoe het wel werkt:


    En hoe het net wat beter kan:


    Ik raad je aan even bij te lezen over OO programmering, aangezien je class hoe hij nu is niet echt dynamiek is wat wel het idee achter OO is.

    Als het om SQL gaat is het vanwege dat je dan een outsync van je servers in de cluster hebt :-).
    En dan moet je dus een resync uitvoeren :-).

    Ondanks dat bepaalde stukken wel verbeteringen kunnen hebben vind ik het knap dat je het doorzet, is de eerste die ook echt een release mogelijk heeft gemaakt. Knap staaltje werk en daarnaast voor de mensen ook een leuk opstapje richting OO :-).


    Wellicht nog wel handig in je volgende versie rekening te houden dat je bij je views ook echte all html bestanden hebt staan nu heb je onder files/ingame/ ook nog html staan. Dit is wellicht makkelijk te ondervangen door middel van een template parser (Smarty / dwoo).


    En als je zelf ook dieper in wilt gaan op OO ook eens kijken naar een abstract class voor bijvoorbeeld "crimes". Wanneer je voor elke class dezelfde functies definieert bijvoorbeeld:

    • getData();
    • setData();
    • assignVariables(); (Indien je template parser gebruikt)
    • evaluate(); (Form submissie)
    • init(); (Initialize van de class)

    Zo weet je altijd en mensen die er aan gaan werken welke functies ze in classes moeten gebruiken om extra toevoegingen te maken. En als je dan NOG dieper wilt gaan kan je er voor kiezen om een singleton class aan te maken waar elke "crime" class uit extend.


    Zo kan je dan i.c.m. de autoloader in je hoofd class direct de class aanspreken. (Ook i.c.m. een static variable)


    Code
    self::$stealObj->init();


    Of dan kan je tijdens het laden van een pagina automatisch lopen door je singleton class en alle init() functies automatisch laten afvuren.


    Meer info over singleton:
    http://nl.wikipedia.org/wiki/Singleton_(ontwerppatroon)


    Je kan bovenstaand ook allemaal negeren en dan zal ik je nog aangeven dat je goed bezig bent :D

    En om dan nog een tussen oplossing te geven in plaats van direct naar PDO over te stappen en een tussen stap voor procedureel programmeren waar mysqli zich uitstekend voor leent. Aangezien als je één class door je programmering heen gooit en de rest procedureel doet dat je PDO class zijn nut een beetje kwijt raakt.



    zo kan je het ook oplossen, en dan wijk je niet zo ver van het bekende af :-).

    Had inderdaad even op de website van MySQL gezocht hiernaar, lijkt me een zeer handige optie. Zoals je aangeeft is het wijzigen een heel stuk makkelijker, bedankt!


    Mocht je btw een view willen maken waar je een SELECT * FROM invoices WHERE id = [ID] dan raad ik je aan op een stored procedure te maken, daarmee kan je net iets makkelijker met parameters omgaan.


    Het is wel mogelijk met views om parameters mee te verzenden dat zit echter niet native in views.