altijd leukquote:Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
En ik kwam er pas achter dat ik de hele json klasse uit m'n framework gewoon kon vervangen door calls naar json_encode en json_decodequote:Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
Hoezo moet je de status nog aanmaken? Zijn die voor ieder record verschillend dan?quote:Op zondag 28 juni 2009 13:17 schreef Likkende_Lassie het volgende:
[..]
het is idd een feit dat het direct uitvoeren van een query makkerlijker is, maar hoe zit het met de performance? en dus straks de totale load op de server.
het is toch een flinke update/insert/select query, select omdat het systeem de stats eventueel nog moet aanmaken.
Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?quote:Op maandag 29 juni 2009 10:48 schreef Scorpie het volgende:
Ik zet vertalingen nooit in de database, maar in een aparte file.
Bij een CMS kan je onderscheid maken he. Je hebt dynamische content die de gebruiker zelf verzorgt (die zet je dan natuurlijk in de database), je hebt systeem meldingen (komen uit een resource file), en generieke meldingen (ook uit de resource file).quote:Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:
[..]
Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?
Ja dat is dus specifiek voor de dynamische content, daar maak ik mij niet zo druk om.quote:Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.
Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.quote:Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzoEen nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
Wat ik persoonlijk doe is de vertalingen in een XML-file opslaanquote:Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:
[..]
Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?
Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.
Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzoEen nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <config> Hier wat configuratieinstellingen voor de taal, zoals een foutmelding als er een vertaling niet gevonden is </config> <page name="home"> <group name="headers"> <constant name="kop">Welkom!</constant> </group> <group name="...">[...]</group> <constant name="blaat">Een vertaling mag ook buiten een groep staan, maar niet buiten een pagina</constant> </page> <page name="...">[...]</page> </language> |
Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.quote:Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
Wat ik persoonlijk doe is de vertalingen in een XML-file opslaanMet SimpleXML en DOM en whatever kun je vanuit je CMS makkelijk muteren in dat soort bestanden, en de performance is over het algemeen een stuk beter als losse databasequeries. (aangezien ik de XML 1 keer parse en vervolgens het object bewaar. Dan wel zo min mogelijk gebruik maken van xpath queries, dat is redelijk zwaar).
Ik had het voornamelijk over dynamische teksten inderdaadquote:Op maandag 29 juni 2009 11:14 schreef Scorpie het volgende:
Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.
Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?quote:Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
aangezien ik de XML 1 keer parse en vervolgens het object bewaar.
Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.quote:Op maandag 29 juni 2009 13:01 schreef Xcalibur het volgende:
[..]
Ik had het voornamelijk over dynamische teksten inderdaad
Vaste teksten zet ik hard in de template, met een aparte template map per taal. Vind ik een stuk gemakkelijker werken dan met een los tekstbestand. Zo kan ik tenminste gewoon zien waar een tekst staan enzo. Bovendien kan je dan per taal nog wat wijzigen in de template, om een of andere reden willen mijn klanten dat altijd
Wijzigingen in de template moet je in het slechtste geval een aantal keer doorvoeren, maar als je het goed doet kan het meeste via de CSS
Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.quote:Op maandag 29 juni 2009 13:03 schreef Xcalibur het volgende:
[..]
Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?
Of stop je het ding in een sessie ofzo?
In het eerste geval lijkt me dat niet zo efficient als je een grote site hebt namelijk
Ik noem vertalingen van teksten niet dynamisch hoor.. Het gaat hier om teksten die eenmaal ingevoerd worden en hooguit een jaartje later wat geupdate worden. Dynamische data als nieuwsberichten zet ik gewoon in hun eigen tabel, dus titel_nl, titel_en kolommen, etc.quote:Op maandag 29 juni 2009 12:06 schreef Catbert het volgende:
[..]
Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.
Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?quote:Op maandag 29 juni 2009 13:26 schreef Intrepidity het volgende:
Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.
Ja, ik heb ook een tijd met een tekstbestand per taal gewerkt, maar dat vond ik toch maar onhandig... vooral omdat je geen goed overzicht hebt waar je nou iets aan het wijzigen bent... En als je 1 tekst als Login wilt vervangen, maar alle andere niet is de kans dat het fout gaat wel aanzienlijkquote:Op maandag 29 juni 2009 13:04 schreef Scorpie het volgende:
[..]
Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.
Zoals het nu ingericht is (en dat zijn kleine klanten met weinig traffic) wordt die XML eens per request omgezet naar een SimpleXML object in PHP. Misschien bewaart .net dat soort objecten wel netjes voor je door middel van een viewstate of iets dergelijks (weinig verstand van .net), maar in PHP gebeurt dat zeker niet volautomatisch, en aangezien HTTP inherent stateless is is dat volgensmij ook niet eenvoudig toe te passen tenzij je caching technieken als memcache gaat inzetten.. Maar ik geef toe dat dat bij ons bedrijf door het gebrek aan heftige traffic nog geen issue is ook om dat soort optimalisaties toe te passen.. Die 0.001sec extra per request maakt met andere woorden geen drol uit.quote:Op maandag 29 juni 2009 14:18 schreef Catbert het volgende:
[..]
Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?
xkcd ftw: http://nl2.php.net/gotoquote:Op dinsdag 30 juni 2009 15:12 schreef GlowMouse het volgende:
http://www.php.net/releases/5_3_0.php
Nu met goto
quote:
Heel ouderwets is nog een understatement. Ik zie er echt het nut niet van. Het wordt wel makkelijker om spaghetticode te schrijven, maar of je daar nou zo blij mee moet zijn...quote:Op dinsdag 30 juni 2009 15:33 schreef Xcalibur het volgende:
ik heb het gevoel dat goto iets heel ouderwets is?
Ik zie het nut er ook niet zo van eerlijk gezegd...
PHP heeft wat weg van C. Om de leercurve voor QBasicgebruikers minder stijl te maken, is deze feature toegevoegd.quote:Op dinsdag 30 juni 2009 22:09 schreef Xcalibur het volgende:
is het weer 1 april ofzo?
Of is dit nu echt een feature?
Bedankt, maar heb het toch met een mooie functie gedaan die een array uitpoept welke ik kan gebruikenquote:
Is dat echt de reden?quote:Op dinsdag 30 juni 2009 22:33 schreef GlowMouse het volgende:
[..]
PHP heeft wat weg van C. Om de leercurve voor QBasicgebruikers minder stijl te maken, is deze feature toegevoegd.
Ik denk het nietquote:Op dinsdag 30 juni 2009 23:03 schreef Xcalibur het volgende:
[..]
Is dat echt de reden?
Wtf... echt...
Het praktische nut staat uitgelegd op de pagina van PHP zelf: eenvoudig uit een loopje ontsnappen bijvoorbeeld. Maargoed, dat kan ook op een andere manier, dat wel.quote:Op dinsdag 30 juni 2009 23:17 schreef Xcalibur het volgende:
Ik kan me eigenlijk ook geen praktisch nut voorstellen....
De toevoeging ontgaat me daarom ook volledig
Maar dat was inmiddels wel duidelijk denk ik
Mjah, deze goto is alleen wel heel erg beperkt ten opzichte van de oude goto. Je kunt er dan ook weer niet alles meequote:Op woensdag 1 juli 2009 09:21 schreef cablegunmaster het volgende:
goto lijkt me ook weer vaag... het is een soort van dirty workaround in m'n ogen. oude dos commandos gebruikten goto.
Inderdaad. Je kunt, thank god, niet uit een methode of van buiten een methode inspringen. Maar dan nog zie ik het gebeuren dat kansloze prutsers hun hele script een grote method maken van 5 pagina's met overal goto's.quote:Op woensdag 1 juli 2009 09:24 schreef HuHu het volgende:
Mjah, deze goto is alleen wel heel erg beperkt ten opzichte van de oude goto. Je kunt er dan ook weer niet alles mee.
The horror!quote:Op woensdag 1 juli 2009 11:07 schreef HuHu het volgende:
Je kunt natuurlijk wel de hele OO structuur van je applicatie weggooien en vervolgens alles met GOTO's gaan oplossen in één grote blob. Dus geen functies of methoden meer gebruiken, maar goto-en naar een label en de return waarde globaal zetten en dan weer terug goto-en enzo.
En dan door een variabele laten bepalen waar je naar terug gaat goto-en?quote:Op woensdag 1 juli 2009 11:07 schreef HuHu het volgende:
Je kunt natuurlijk wel de hele OO structuur van je applicatie weggooien en vervolgens alles met GOTO's gaan oplossen in één grote blob. Dus geen functies of methoden meer gebruiken, maar goto-en naar een label en de return waarde globaal zetten en dan weer terug goto-en enzo.
Uiteraard. Met zo'n mooie if-elseif-else constructie:quote:Op woensdag 1 juli 2009 12:28 schreef Light het volgende:
[..]
En dan door een variabele laten bepalen waar je naar terug gaat goto-en?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | doeIetsLeuks: // lala $c = $a + $b; // allemaal globaal // We zijn klaar, waar gaan we nu naar terug? if ($gaTerugNaar == 'start') goto start; elseif ($gaTerugNaar == 'gevangenis') goto gevangenis; elseif ($gaTerugNaar == 'school') goto school; else goto einde; ?> |
1 2 3 | goto a, b, c; ?> |
had m geinstalleerd. en lokaal (127.0.0.1/phpMyAdmin) werkte het wel.quote:Op woensdag 1 juli 2009 13:34 schreef Xcalibur het volgende:
"opeens"?
Wat heb je veranderd, en wat krijg je voor foutmelding?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |