Hoezo moet dat op een hosting? Kun je niet lokaal parsen en dan het resultaat uploaden?TheNephilim schreef op maandag 01 september 2014 @ 15:50:
Een XML bestand van net geen 100 MB parsen, heerlijk op 'gewone' hosting...
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Nee, elke dag moet er automatisch een XML bestand gedownload worden (dat werkt) en dan het bestand inlezen in de database (dat werkt dus niet).Firesphere schreef op maandag 01 september 2014 @ 15:56:
[...]
Hoezo moet dat op een hosting? Kun je niet lokaal parsen en dan het resultaat uploaden?
[ Voor 3% gewijzigd door TheNephilim op 01-09-2014 16:01 ]
Hmmmm, je zou denken dat een xml inlezen niet zo heftig is, toch? Tenminste, ik heb meerdere SOAP koppelingen en XML-alike koppelingen draaien op een shared hosting, zonder problemen.TheNephilim schreef op maandag 01 september 2014 @ 16:01:
[...]
Nee, elke dag moet er automatisch een XML bestand gedownload worden (dat werkt) en dan het bestand inlezen in de database (dat werkt dus niet).
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Het zou niet zo'n probleem zijn als het XML bestand schoon was... maarjaFiresphere schreef op maandag 01 september 2014 @ 16:06:
[...]
Hmmmm, je zou denken dat een xml inlezen niet zo heftig is, toch? Tenminste, ik heb meerdere SOAP koppelingen en XML-alike koppelingen draaien op een shared hosting, zonder problemen.
SimpleXMLElement Object ( [isbn] => *201281147* [auteur] => Chunk Serie/HangUp [titel] => HangUp Navigation holder [...] )
Alleen al filteren op geldig ISBN en nog op zoveel andere bullshit, dat is vooral het probleem
Laten we het erop houden dat een nette feed een heleboel zou helpen
Kan deze dan niet verkapt worden in kleinere delen? Bij een vorig bedrijf waar ik werkte, kregen we bijvoorbeeld per subcategorie van producten een xml.TheNephilim schreef op maandag 01 september 2014 @ 16:01:
[...]
Nee, elke dag moet er automatisch een XML bestand gedownload worden (dat werkt) en dan het bestand inlezen in de database (dat werkt dus niet).
RTFM!
De enige optie die ik had, was het downloaden van een SQL bestand. Daar ben ik alleen niet zo happig op!_Moe_ schreef op maandag 01 september 2014 @ 16:13:
[...]
Kan deze dan niet verkapt worden in kleinere delen? Bij een vorig bedrijf waar ik werkte, kregen we bijvoorbeeld per subcategorie van producten een xml.
Hoezo niet? SQL is veel snellere oplossing gok ik.TheNephilim schreef op maandag 01 september 2014 @ 16:15:
[...]
De enige optie die ik had, was het downloaden van een SQL bestand. Daar ben ik alleen niet zo happig op!
En anders, zou ik de XML inlezen en in je database gooien, en pas daarna je filters en controles gaan toepassen.
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Eerste keer deploy naar een IIS server, ik faalde
Maar ik ga er nu aan werken
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Het gevolg: De homepage HTML is nu 4% bytes korter (van 3716 naar 3596 bytes)
Heb ook plannen voor om classnames en IDs te comprimeren, net zoals JS minifiers variable namen kleiner maakt. Alleen de HTML kan ik met compacte classnames al 21% (748 bytes) kleiner maken, dan heb ik de IDs nog niet meegerekend. De besparing in de JS en CSS files zal immens zijn, gezien de mijn classnames vrij lang zijn en veel gebruikt worden.
Minification van classnames wil ik realiseren door een soort globale lijst aan classnames te generen en die te converteren naar a-Z, aa-ZZ, enz. Dit wil ik automatiseren en ik denk dat ik dat wel kan realiseren zonder al te veel complicaties.
Bytes besparen in de website is een leuke hobby van me. Bijkomend voordeel: Je website wordt er lekker snel van. Ik heb eerder onze custom fonts gestript van bijzondere tekens, waarbij in sommige gevallen meer dan 200kb werd bespaard.
Let op: Mijn post bevat meningen, aannames of onwaarheden
Dat is inderdaad sneller, misschien een alternatief. Het inserten van alle 235.000+ records is namelijk niet heel snel. Helaas het filteren zodat ik de benodigde 7000~9000 overhoud ook nietFiresphere schreef op maandag 01 september 2014 @ 16:18:
[...]
Hoezo niet? SQL is veel snellere oplossing gok ik.
En anders, zou ik de XML inlezen en in je database gooien, en pas daarna je filters en controles gaan toepassen.
En het project heeft al een jaar stilgestaan omdat er één van de partijen ermee stopte. Nu er een vervanger gevonden is, moet het laatste nog even gefixed worden.
Edit: na het inserten van 66.033 records kapt hij ermee. Looptijd van php overschreden denk ik. Nouja... dan wat anders bedenken dus.
[ Voor 10% gewijzigd door TheNephilim op 01-09-2014 16:45 ]
Verwijderd
inloggen en sql command gebruiken, of bigdump gebruiken.TheNephilim schreef op maandag 01 september 2014 @ 16:45:
[...]
Dat is inderdaad sneller, misschien een alternatief. Het inserten van alle 235.000+ records is namelijk niet heel snel. Helaas het filteren zodat ik de benodigde 7000~9000 overhoud ook niet
En het project heeft al een jaar stilgestaan omdat er één van de partijen ermee stopte. Nu er een vervanger gevonden is, moet het laatste nog even gefixed worden.
Edit: na het inserten van 66.033 records kapt hij ermee. Looptijd van php overschreden denk ik. Nouja... dan wat anders bedenken dus.
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
[ Voor 27% gewijzigd door WernerL op 01-09-2014 17:06 ]
Roses are red, violets are blue, unexpected '{' on line 32.
Dat ligt aan je instellingen. Sommige Linux distributies doen dat automatisch, andere niet. En je kunt anders altijd nog set_time_limit (0); gebruiken.WernerL schreef op maandag 01 september 2014 @ 17:05:
PHP vanaf de command line draaien? Op die manier ooit 250.000 records in een database geknalt, ging prima.De timeout van PHP geldt afaik enkel wanneer je het script vanuit de browser start.
[ Voor 3% gewijzigd door ThomasG op 01-09-2014 17:10 ]
Waarom de overhead van php daar bij gebruiken?WernerL schreef op maandag 01 september 2014 @ 17:05:
PHP vanaf de command line draaien? Op die manier ooit 250.000 records in een database geknalt, ging prima.De timeout van PHP geldt afaik enkel wanneer je het script vanuit de browser start.
mysql -u {username} -p{PASSWORD} {databasename} < {sqldumpfile.sql}
(Hij kan een SQL-bestand krijgen, remember
[ Voor 5% gewijzigd door Firesphere op 01-09-2014 17:11 ]
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Ik heb zonder problemen 200k records geinsert. Niet zo bijster bijzonder. Je kan dit op verschillende manieren doen.. Gewoon 1 voor 1 wat redelijk traag is of een insert into blaat (x, y) values (x, y), (x,y),(x, etc..TheNephilim schreef op maandag 01 september 2014 @ 16:45:
[...]
Dat is inderdaad sneller, misschien een alternatief. Het inserten van alle 235.000+ records is namelijk niet heel snel. Helaas het filteren zodat ik de benodigde 7000~9000 overhoud ook niet
En het project heeft al een jaar stilgestaan omdat er één van de partijen ermee stopte. Nu er een vervanger gevonden is, moet het laatste nog even gefixed worden.
Edit: na het inserten van 66.033 records kapt hij ermee. Looptijd van php overschreden denk ik. Nouja... dan wat anders bedenken dus.
Looptijd van PHP kun je ook uitzetten, en meestal draai je dit soort dingen juist via de CLI ipv een webpagina.
Fijn als iemand de site wil scrapen.Gamebuster schreef op maandag 01 september 2014 @ 16:41:
Minification van classnames wil ik realiseren door een soort globale lijst aan classnames te generen en die te converteren naar a-Z, aa-ZZ, enz. Dit wil ik automatiseren en ik denk dat ik dat wel kan realiseren zonder al te veel complicaties.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
maar gzippen doet dat min of meer al voor jou. als je dat gebruikt zou ik ook kijken naar de winst in bytes na compressie. ik verwacht dat dat niet zo veel is.Gamebuster schreef op maandag 01 september 2014 @ 16:41:
Heb ook plannen voor om classnames en IDs te comprimeren, net zoals JS minifiers variable namen kleiner maakt. Alleen de HTML kan ik met compacte classnames al 21% (748 bytes) kleiner maken, dan heb ik de IDs nog niet meegerekend. De besparing in de JS en CSS files zal immens zijn, gezien de mijn classnames vrij lang zijn en veel gebruikt worden.
Minification van classnames wil ik realiseren door een soort globale lijst aan classnames te generen en die te converteren naar a-Z, aa-ZZ, enz. Dit wil ik automatiseren en ik denk dat ik dat wel kan realiseren zonder al te veel complicaties.
Mislukt.oisyn schreef op maandag 01 september 2014 @ 01:50:
Ik ook niet, maar ik hoopte je makkelijk af te schepen.
Naja, inmiddels is ook wel duidelijk dat het om opslag van configuratie gaat voor iets interns, niet voor data-exchange, dan is het minder erg.Het feit dat ik die trailing komma daar accepteer in die specifieke case waar het in mijn geval over gaat heeft niets met dat principe te maken, maar met het feit dat dat gewoon heel erg pragmatisch is en ik mijn kapitaal er wel op in durf te zetten dat dat nooit een groot probleem gaat vormen.
Daar kwam die massale knee-jerk reaction ook vandaan denk ik; je had het zonder verdere context over een json-parser die niet-standaard json accepteerde, en dan denken veel mensen blijkbaar aan data-exchange, zien een potentieel probleem en plaatsen daar vraagtekens bij. Op zich wel goed, hebben we met zijn allen blijkbaar dus wel geleerd van het verleden
Dat was een snelle iteratie! Dank voor een treffende illustratie waarom zut een probleem isTheNephilim schreef op maandag 01 september 2014 @ 16:11:
Het zou niet zo'n probleem zijn als het XML bestand schoon was... maarja
Bytebesparing op websites lijkt mij grotendeels zinloos om snelheidswinst te halen, ik geloof eigenlijk niet dat het echt uitmaakt. (In alle profiling die ik heb bekeken waren de grootverbruikers de requests, de scripts en de rendering. En die blijven allemaal hetzelfde.)Gamebuster schreef op maandag 01 september 2014 @ 16:41:
Bytes besparen in de website is een leuke hobby van me. Bijkomend voordeel: Je website wordt er lekker snel van. Ik heb eerder onze custom fonts gestript van bijzondere tekens, waarbij in sommige gevallen meer dan 200kb werd bespaard.
200kb aan ongebruikte fonts weghalen is natuurlijk wel zinnig. Maar geminifiede classnames? (En inderdaad, gzip)
Never explain with stupidity where malice is a better explanation
Waarom zou je daar überhaupt rekening mee houden?
We are shaping the future
Wat wil je daarmee zeggen?incaz schreef op maandag 01 september 2014 @ 17:29:
[...]
Dat was een snelle iteratie! Dank voor een treffende illustratie waarom zut een probleem is
---
Anyway, er zijn inderdaad talloze manieren om dit op te lossen, maar ik heb niet alle mogelijkheden. Op dit moment heb ik het opgelost door het bestand op te splitsen in meerdere kleine bestanden.
Dat het bouwen van goede feeds en goede bestanden veel tijdswinst oplevert, en dat jij een stuk minder problemen had gehad als men aan de andere kant meer aandacht had besteed aan een goede opbouw. Maar ik begrijp nu bij teruglezen dat het om niet-schone data gaat, niet om niet-schone syntax?
Never explain with stupidity where malice is a better explanation
Hoe doe je zo quoten?incaz schreef op maandag 01 september 2014 @ 17:35:
[...]
Dat het bouwen van goede feeds en goede bestanden veel tijdswinst oplevert, en dat jij een stuk minder problemen had gehad als men aan de andere kant meer aandacht had besteed aan een goede opbouw. Maar ik begrijp nu bij teruglezen dat het om niet-schone data gaat, niet om niet-schone syntax?
De syntax is niet geweldig, maar kan ik niks van zeggen. Echter is de data in de velden niet consistent, kan ik vooraf niet filteren (op categorie of leverancier bijv.) en zit er enorm veel rotzooi in. Dingen die er (volgens mij) niet in horen te staan.
<product><isbn>??</isbn> [...] is niet echt handig bijvoorbeeld
Lekker belangrijk... daar ga je als site toch geen rekening mee houden?[b][message=42814980,noline]RayNbow schreef op maandag 01 september 2014 @ Fijn als iemand de site wil scrapen.
Alex) schreef op maandag 01 september 2014 @ 17:30:
Waarom zou je daar überhaupt rekening mee houden?
http://www.w3.org/QA/Tips/goodclassnames ?alienfruit schreef op maandag 01 september 2014 @ 17:40:
Lekker belangrijk... daar ga je als site toch geen rekening mee houden?
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Ik vind er nog wel een groot verschil in zitten om de code leesbaar te maken voor de Developers ( duidelijke Class namen )
Of de source goed leesbaar de houden voor de eindgebruiker / Scrapper, die ten slotte de Source niet hoeven te lezen / te begrijpen, die hebben alleen boodschap aan de gerenderde site.
Never explain with stupidity where malice is a better explanation
Always looking for developers wanting to work with Erlang.
Het zou ook mooi zijn als YouTube het ook zou doen... De oude site was een stuk simpeler om te crawlen.incaz schreef op maandag 01 september 2014 @ 18:08:
Hmmm, het zou wel leuk zijn als de overheid het zou doen, rekening houden met scrapers, als ze geen zin hebben hun informatie behoorlijk te ontsluiten.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
In zijn voorbeeld minify je uiteindelijk het bestand, dmv 'andere' class names. w3 heeft het over duidelijkheid, als in een codestandaard. Wereld van verschil.
Je hebt toch ook gewoon minified js & css? Dat kun je toch ook amper lezen... Nou, en hiermee heb je al een stukje minified HTML.
Als ze willen scrapen, kijken ze 5 seconden naar de broncode en zien ze dat alle data via een JSON API wordt opgehaald en spreken ze dat API direct aan. Natuurlijk is dat niet de bedoeling...
Let op: Mijn post bevat meningen, aannames of onwaarheden
Mijn CSS file is 25537 bytes, minified in productie.incaz schreef op maandag 01 september 2014 @ 17:29:
Bytebesparing op websites lijkt mij grotendeels zinloos om snelheidswinst te halen, ik geloof eigenlijk niet dat het echt uitmaakt. (In alle profiling die ik heb bekeken waren de grootverbruikers de requests, de scripts en de rendering. En die blijven allemaal hetzelfde.)
200kb aan ongebruikte fonts weghalen is natuurlijk wel zinnig. Maar geminifiede classnames? (En inderdaad, gzip)
Deze bevat 205 keer een classname, bestaande uit 94 unieke classnames.
De 52 meest voorkomende classnames kan ik verkleinen tot 1 teken: reeks a-z en A-Z. De rest tot 2 tekens; aa tot zz.
Alle classnames bij elkaar zorgen voor 5656 bytes in mijn CSS file: Gemiddeld 27 tekens per classname (ik hou van lange namen)
Na verkleinen van de classnames naar ruwweg gemiddeld 1,5 teken per classname zullen de classnames achteraf maar 308 bytes innemen. Tegenover 5656 is dit een besparing van 5348 bytes in de CSS, naast de 748 bytes die ik ongeveer kan besparen in de HTML. (heb ik eerder uitgerekend)
Voor mijn CSS is dit een besparing van 21% over al minified CSS.
Hoeveel het verschil is na gzip weet ik inderdaad niet, maar sinds wanneer is "gzip" het argument om maar niet aan compressie/minification te doen? Jij minified toch ook je CSS/JS voordat je het gzip't?
Ook in mijn Javascript heb ik veel classnames. Ook hier kan ik ze comprimeren d.m.v. een preprocessor. Hier moet ik echter nog een oplossing voor bedenken. Mijn JS gaat al door een pre-processor heen om 'm te minifien en te builden tot een productie versie, hier kan ik wel een extra hook in zetten. Misschien dat ik een soort "macro" toevoeg voor classnames. Voorbeelden:
1
2
3
4
5
6
7
| // alles tussen backticks een classname ("smerige" hack) element.classList.add("`lange-classname`"); // alle classnames met hun "gecomprimeerde versie" worden in een hash gezet // - of, voor productie - // een search-and-replace naar CLASSNAMES[...] element.classList.add(CLASSNAMES["lange-classname"]); |
[ Voor 19% gewijzigd door Gamebuster op 01-09-2014 19:23 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Hoewel zoveel bezoekers met een winst van 10 bytes maar ~ 1mb oplevert kan het wel snel aan tikken.
Het is niet alleen voordelig voor de client, maar ook voor je server. Ik had één dag een dikke piek van bezoekers (20k bezoekers in ~ 5 uur) op een website die niet helemaal netjes in elkaar zat. Dit resulteerde in een enorm data verbruik.
Goed, tegenwoordig is het niet meer zo lastig om een goede server voor weinig geld te hebben, en dataverkeer kost ook geen goud meer.. toch zie ik wel voordelen om je spul netjes te optimaliseren. Echter voor elke 'basic / standaard' website is het misschien een zware overkill.
Wel leuk hobby projectje oid om lekker aan te sleutelen. Ik hou ook wel van stats en tot het gaatje gaan qua optimalisatie
Dan ga dat eerst maar eens meten. Als je zelf zegt "Bytes besparen in de website is een leuke hobby van me" zou je toch zeggen dat je wist hoeveel gzippen wel/niet uitmaakt t.o.v. wel/niet minifiën en hoeveel gzippen plus minifiën uitmaakt t.o.v. gzippen zonder minifiënGamebuster schreef op maandag 01 september 2014 @ 19:13:
Hoeveel het verschil is na gzip weet ik inderdaad niet
Als je gzipped heeft minifiën niet héél veel nut; het is niet 0 maar wel (bijna) verwaarloosbaar. Maar leesbare code > "minified" code (lees: ingekortte classnames). Als jij classnames minified doe je dat waarschijnlijk "handmatig"? Als je / omdat je JS/CSS (automatisch (lees: "gratis")) kunt laten minifiën voordat je deployed (dus ergens in je pipeline) dan doe je dat uiteraard gewoon want mét of zonder gzip scheelt 't altijd wel wat. Maar wat jij doet (classnames kort maken) is niet iets wat makkelijk geautomatiseerd kan worden zodat verwijzingen naar die classnames in HTML/JS/whatever ook 'automatisch meegepakt worden' == dure handenarbeid == de moeite niet waard voor die paar bytes.Gamebuster schreef op maandag 01 september 2014 @ 19:13:
maar sinds wanneer is "gzip" het argument om maar niet aan compressie/minification te doen?
Op high-traffic sites (FB, Google, Twitter, Reddit, SO... dat soort sites) scheelt inderdaad elke byte en kan een paar bytes besparing enkele gigabytes per dag besparing opleveren.
[ Voor 11% gewijzigd door RobIII op 01-09-2014 19:59 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Ik ga het absoluut niet met de hand doen, dat is gekkenwerk. Ik ben juist aan het uitzoeken hoe je het kan automatiseren op een zo'n transparante manier mogelijk. Voor de JS moet ik nog een oplossing vinden.
Gzip pas ik sowieso wel toe; Ik kan me niet voorstellen dat als je 5000 bytes bespaard op een CSS file, dat je dit niet terugziet in de gzipped versie ervan. Toch kan ik het pas meten als ik de minification daadwerkelijk heb gemaakt; ik kan het niet vooraf testen.
[ Voor 40% gewijzigd door Gamebuster op 01-09-2014 19:30 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
En daar ben ik dan wel eens benieuwd naar. Ik zag je eerder al een "search-and-replace" noemen. Als je dergelijke ongein op een béétje codebase loslaat (dus een niet-context-sensitive Search and Replace) heb je in no-time je code om zeep geholpen. Dan kom je al heel wat meer tooling en andere ongein aan 't aan elkaar knopen om dat goed werkend te krijgen (if at all; ik heb in ieder geval zoiets nog nooit (als in volledig zoals jij wil / beschrijft) gezien, maar ik ben een beetje 'uit' de front-end fadsGamebuster schreef op maandag 01 september 2014 @ 19:27:
Voor de JS moet ik nog een oplossing vinden.
[ Voor 5% gewijzigd door RobIII op 01-09-2014 19:42 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
[ Voor 18% gewijzigd door Megamind op 01-09-2014 19:42 ]
Verder, al mijn classnames hebben een vrije vaste benaming-structuur. Zoals eerder aangegeven is de gemiddelde lengte 27 tekens. De kans op collisions is near-0: Er zijn geen classnames als "active", "column" e.d.; alle classnames bestaan uit meerdere woorden gescheiden met een streepje. Als ik een search-and-replace doe op "<classname>", heb ik waarschijnlijk bijna 100% van de cases te pakken. De overige cases kan ik met de hand herkennen.
Toch is er een kans op fouten. Daarom denk ik nog na hoe ik het exact ga aanpakken. Ik denk dat een macro het beste in de buurt komt van "werkt prima" zonder code clutter. Je kan dan denken aan iets als CLASS(dit-is-een-lange-classname) waarbij ik een search-and-replace daarop doe.
Holy shit, van 25MB naar 1MB? Lees ik dat nou goed?Megamind schreef op maandag 01 september 2014 @ 19:41:
Ik heb handmatig gzip toegepast in een WebAPI project waarbij er grote OData queries worden gestuurd, alle tabellen zijn nu een stuk kleiner, enige nadeel, het kost je wel enorm veel aan CPU. Staat nu nog op compression level 5 van de 10, verschil wordt niet veel groter maar CPU gaat wel hard omhoog.
[afbeelding]
[ Voor 20% gewijzigd door Gamebuster op 01-09-2014 19:43 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Aan GZippen heb je (in 99% van de gevallen) véél meer aan dan aan 'minifiën'. Platte tekst (en dan met name code en data want daar zit lekker veel structuur en repeterende tekst in) comprimeert als een dolle. Daar kan 'minifiën' zelden tegenop. De combinatie van die twee technieken kan nog wel wat éxtra opleveren maar GZippen is 't eerste wat ik zou doen.Gamebuster schreef op maandag 01 september 2014 @ 19:42:
Holy shit, van 25MB naar 1MB? Lees ik dat nou goed?
[ Voor 111% gewijzigd door RobIII op 01-09-2014 20:01 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Snap ik, maar gzip staat simpelweg gewoon aan. Daar kan ik verder weinig aan doenRobIII schreef op maandag 01 september 2014 @ 19:43:
Mja, je moet 't ook vooral allemaal lekker helemaal zelf weten hoorIk krijg er alleen kippenvel van een een behoorlijk NIH gevoel bij.
[...]
Aan GZippen heb je (in 99% van de gevallen) véél meer aan dan aan 'minifiën'. Platte tekst (en dan met name code en data want daar zit lekker veel structuur en repeterende tekst in) comprimeert als een dolle. Daar kan 'minifiën' zelden tegenop. De combinatie van die twee technieken kan nog wel wat éxtra opleveren maar GZippen is 't eerst wat ik zou doen.
Let op: Mijn post bevat meningen, aannames of onwaarheden
1
2
3
4
5
6
7
8
9
| gzip off;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; |
Iemand heeft hier een serieuze case van maandag gehad.
Zoek de mogelijkheden voor optimalisatie.
edit: Done, gzip werkt nu. Today was a good day
edit2: HTTPS + Gzip... gaat dat wel samen...?
[ Voor 15% gewijzigd door Gamebuster op 01-09-2014 20:15 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
We are shaping the future
Wijs me 1 tool aan die classnames en IDs kan minifyen in je HTML, CSS en JS.Alex) schreef op maandag 01 september 2014 @ 20:17:
Waarom zou je zelf willen minifyen, daar bestaan toch al decennialang tools voor?
Let op: Mijn post bevat meningen, aannames of onwaarheden
Closure Compiler + Stylesheets + Templates.Gamebuster schreef op maandag 01 september 2014 @ 20:18:
[...]
Wijs me 1 tool aan die classnames en IDs kan minifyen in je HTML, CSS en JS.
We are shaping the future
Waarom zou je IDs willen minifyen? Die dienen als fragment identifiers.Gamebuster schreef op maandag 01 september 2014 @ 20:18:
[...]
Wijs me 1 tool aan die classnames en IDs kan minifyen in je HTML, CSS en JS.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Never explain with stupidity where malice is a better explanation
[ Voor 7% gewijzigd door kaesve op 01-09-2014 21:41 ]
Leg uit? Een variabelenaam wegcompileren?incaz schreef op maandag 01 september 2014 @ 21:30:
Nou ja, om dezelfde reden dat een compiler variabelenamen wegcompileert lijkt me?
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
https://fgheysels.github.io/
Niet perse. Obfuscaten is het onleesbaar van code maken voor mensen dat hoeft niet gelijk te zijn aan minifyingwhoami schreef op maandag 01 september 2014 @ 22:58:
Obfuscaten, gelijk we zeggen
Nothing to see here!
Awesome
[ Voor 20% gewijzigd door Gamebuster op 01-09-2014 23:38 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Eerder:
localName1 -> stack + 4
localName2 -> stack + 8
globalName -> offset 00523b38h
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Came here to say that, just to find out you beat me to it.oisyn schreef op maandag 01 september 2014 @ 23:38:
[...]
Eerder:
localName1 -> stack + 4
localName2 -> stack + 8
globalName -> offset 00523b38h
Obfuscaten is iets anders; je kunt broncode obfuscaten (variabelen foo, bar en baz worden lo10l01l0lol1l, lo10l01l0l011l en 1o10l01l0l011l bijvoorbeeld zodat ze a) lastig te lezen zijn en b) lastig uit elkaar te houden zijn en dan kan er nog vanalles worden gedaan met het 'om-schrijven van logica' zoals (simpel voorbeeld, uit de duim gezogen) if a < b wordt if b > a etc. om code lastiger te doorgronden te maken) en ook op 'machine niveau' kun je code lastig(er) te doorgronden maken door veel jumps naar overal-en-nergens te doen, logica te herschikken zodat 't wel doet wat 't moet doen maar "anders" waardoor je even een mindfuck krijgt, bit-twiddling of opcode truukjes uit te halen die gewoon, bijv., "mul 2, x" doen maar "lsh 1, x" 'lezen' waardoor je brein weer extra 'load' krijgt bij 't begrijpen ervan etc. (wat effectief natuurlijk deels ook gebeurt als je broncode obfuscate).whoami schreef op maandag 01 september 2014 @ 22:58:
Obfuscaten, gelijk we zeggen
Bij minifyen is 't doel kleinere (bron)code produceren t.b.v. minder data over de lijn -> snellere page loads. Dat een 'side effect' daarbij is dat myTotallySaneVariableName wordt omgeschreven naar a en dat dat dus wat weg heeft van obfuscation is, IMHO, puur een side-effect.
[ Voor 75% gewijzigd door RobIII op 02-09-2014 00:08 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Tis simpeler om te zeggen dat "myTotallySaneVariableName" bijvoorbeeld "sbrilaaealtnmtlemnyvoeyaa" wordt.. Juist omdat obfuscation meer het verstoppen van het origineel is en/of moeilijker maken om het origineel te achterhalen. Ik zie het haast meer als een scrambler.RobIII schreef op maandag 01 september 2014 @ 23:55:
[...]
Bij minifyen is 't doel kleinere (bron)code produceren t.b.v. minder data over de lijn -> snellere page loads. Dat een 'side effect' daarbij is dat myTotallySaneVariableName wordt omgeschreven naar a en dat dat dus wat weg heeft van obfuscation is, IMHO, puur een side-effect.
Imo is het makkelijk te vertellen wat obfuscation is dan minifien.
[ Voor 4% gewijzigd door Douweegbertje op 02-09-2014 00:16 ]
Hoe is 'sbrilaaealtnmtlemnyvoeyaa' een minification van 'myTotallySaneVariableName'? Of begrijp ik je post nou verkeerd? Mijn laatste alinea gaat over minification als je dat gemist mocht hebbenDouweegbertje schreef op dinsdag 02 september 2014 @ 00:15:
Tis simpeler om te zeggen dat "myTotallySaneVariableName" bijvoorbeeld "sbrilaaealtnmtlemnyvoeyaa" wordt.. Juist omdat obfuscation meer het verstoppen van het origineel is en/of moeilijker maken om het origineel te achterhalen. Ik zie het haast meer als een scrambler.
Kort:
foo, bar en baz worden (bijvoorbeeld) bij
• obfuscation: lo10l01l0lol1l, lo10l01l0l011l en 1o10l01l0l011l
• minification: a, b en c
Hoewel bij obfuscation natuurlijk ook prima a, b, en c kunnen worden gebruikt, maar die zijn makkelijker uit elkaar te houden als je probeert broncode (of "decompiled code") te de-obfuscaten (wat vaak toch (deels) noeste "grijze massa arbeid" is)
[ Voor 27% gewijzigd door RobIII op 02-09-2014 00:39 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Verwijderd
Wellicht een interessant artikel inzake CSS minifying en het gebruik van Gzip: CSS Minifier and alphabetiser. Zo te zien zit er nog best een winst in (~20%) te behalen bij het efficienter minifyen van CSS, als ik dat artikel mag geloven. Wat Gzip bijvoorbeeld leuk vind, is alfabetisch geordende properties.RobIII schreef op maandag 01 september 2014 @ 19:43:
Mja, je moet 't ook vooral allemaal lekker helemaal zelf weten hoorIk krijg er alleen kippenvel van een een behoorlijk NIH gevoel bij.
[...]
Aan GZippen heb je (in 99% van de gevallen) véél meer aan dan aan 'minifiën'. Platte tekst (en dan met name code en data want daar zit lekker veel structuur en repeterende tekst in) comprimeert als een dolle. Daar kan 'minifiën' zelden tegenop. De combinatie van die twee technieken kan nog wel wat éxtra opleveren maar GZippen is 't eerste wat ik zou doen.
Je begrijpt zijn post verkeerdRobIII schreef op dinsdag 02 september 2014 @ 00:18:
[...]
Hoe is 'sbrilaaealtnmtlemnyvoeyaa' een minification van 'myTotallySaneVariableName'? Of begrijp ik je post nou verkeerd? Mijn laatste alinea gaat over minification als je dat gemist mocht hebbenJij hebt 't over obfuscation waar ik de voorlaatste alinea aan spendeer
Kort:
foo, bar en baz worden (bijvoorbeeld) bij
• obfuscation: lo10l01l0lol1l, lo10l01l0l011l en 1o10l01l0l011l
• minification: a, b en c
Hoewel bij obfuscation natuurlijk ook prima a, b, en c kunnen worden gebruikt, maar die zijn makkelijker uit elkaar te houden als je probeert broncode (of "decompiled code") te de-obfuscaten (wat vaak toch (deels) noeste "grijze massa arbeid" is)![]()
Nothing to see here!
...wat ik dan maar matige obfuscation vind; bij kortere variabelenamen (zeg foo en bar) heb je een stuk minder permutaties en zijn de variabelen nog steeds goed uit elkaar te houden. Maar het valt wel onder obfuscation ja.Rutix schreef op dinsdag 02 september 2014 @ 07:57:
[...]
Je begrijpt zijn post verkeerdhij bedoelt dat obfuscaten ook van 'myTotallySaneVariableName' , 'sbrilaaealtnmtlemnyvoeyaa' kan maken omdat het niet als doel heeft om zo klein mogelijk te zijn maar niet te lezen ;P
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Da's waar. Als die functionaliteit nodig is, is het inderdaad niet handig om te minifyen.kaesve schreef op maandag 01 september 2014 @ 21:40:
Het is wel onzinniger, omdat id's extra functionaliteit hebben: http://en.wikipedia.org/wiki/HTML#Attributes leidt naar het subkopje 'Attributes' omdat dat subkopje dat id heeft. Als je het zou minifyen, wordt het iets als http://en.wikipedia.org/wiki/HTML#z, wat een stuk minder makkelijk te onthouden is
Never explain with stupidity where malice is a better explanation
Korte namen zijn juist beter uit elkaar te houden, en is daarmee dus slechter dan het gebruik van lange namen.RobIII schreef op dinsdag 02 september 2014 @ 08:45:
[...]
...wat ik dan maar matige obfuscation vind; bij kortere variabelenamen (zeg foo en bar) heb je een stuk minder permutaties en zijn de variabelen nog steeds goed uit elkaar te houden. Maar het valt wel onder obfuscation ja.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
{signature}
[oude-koeien-uit-de-sloot]Jan_V schreef op maandag 25 augustus 2014 @ 21:56:
[...]
Zelf ben ik nog van de 'overal-een-interface-voor-maken'-code. Zal morgen het stuk van Ayende wel even lezen, misschien kom ik dan tot andere inzichten.
Zo, het heeft even geduurd, maar ik ben er eindelijk aan toe te komen om alle posts van Ayende te lezen over Limit your abstractions.
Het is zeker een interessante kijk op dingen en waarschijnlijk ook goed toepasbaar. Wel even wennen qua concept, maar vast en zeker werkbaar.
Wel zit ik nog een beetje met het 'injecteren' van de benodigde properties die sommige objecten/classes nodig hebben. Tevens zou ik waarschijnlijk een soort van CommandExecutor toevoegen, wat SteveR ook aanhaalt in de comments, zodat je niet rare if-statements krijgt in je productie code.
Binnenkort maar eens proberen dit uit te voeren in een project en kijken hoe ver ik er mee kom. Het lijkt in ieder geval te zorgen voor een veel 'schonere' codebase.
Battle.net - Jandev#2601 / XBOX: VriesDeJ
*gaaaap*
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Nothing to see here!
We are shaping the future
Eindejaars.... in September....?Alex) schreef op dinsdag 02 september 2014 @ 11:46:
Eindejaarsgesprek gehad met mijn manager. Ging goed
Ons nieuwe fiscale- en carrièrejaar begint nou eenmaal op 1 september.
We are shaping the future
^ lol
http://donottouch.org (filmpje bevat enkele seconden soort-van NSFW)
^ awesome
[ Voor 65% gewijzigd door Gamebuster op 02-09-2014 14:49 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Sinds 1 september zijn we met onze webbased urenregistratietool van een lokale server naar de cloud gegaan.
Wanneer je nu de tool (lees URL) wilt openen, moet je eerst handmatig een certificaat installeren in de browser. Daarna moet je dat certificaat middels een wachtwoord decrypten en dan pas kun je inloggen.
Voor iedere browser op iedere PC moet bovenstaand proces doorlopen worden, wil je er bij kunnen.

Over "security through obscurity" gesproken.
[ Voor 4% gewijzigd door Matis op 02-09-2014 12:57 ]
If money talks then I'm a mime
If time is money then I'm out of time
Nu pas wakker? Dacht dat jij les had om die tijd of ben je aan het spijbelen?
Always looking for developers wanting to work with Erlang.
Dat doen ze bij de RDW ook zo, als je aansluit als autohandelaar.Matis schreef op dinsdag 02 september 2014 @ 12:57:
Gadverdamme.
Sinds 1 september zijn we met onze webbased urenregistratietool van een lokale server naar de cloud gegaan.
Wanneer je nu de tool (lees URL) wilt openen, moet je eerst handmatig een certificaat installeren in de browser. Daarna moet je dat certificaat middels een wachtwoord decrypten en dan pas kun je inloggen.
Voor iedere browser op iedere PC moet bovenstaand proces doorlopen worden, wil je er bij kunnen.
[afbeelding]
Over "security through obscurity" gesproken.
Voorheen werkte het alleen in Internet Explorer < 10 op Windows. Nu werkt het wel in diverse browsers op zowel Windows als Linux-based OSen.alienfruit schreef op dinsdag 02 september 2014 @ 12:58:
Ach nog altijd beter wanneer het alleen werkt in Silverlight in Firefox... SAP ByD prut
If money talks then I'm a mime
If time is money then I'm out of time
Die tweede is wel nice. Alleen jammer dat er dus een NSFW stukje in zit
Dat is een holder of key principe denk ik (wel een crappy implementatie though).TheNephilim schreef op dinsdag 02 september 2014 @ 13:28:
[...]
Dat doen ze bij de RDW ook zo, als je aansluit als autohandelaar.
Nothing to see here!
Cursor erop plaatsen dan maarRutix schreef op dinsdag 02 september 2014 @ 14:43:
[...]
Die tweede is wel nice. Alleen jammer dat er dus een NSFW stukje in zit
Let op: Mijn post bevat meningen, aannames of onwaarheden
Let op: Mijn post bevat meningen, aannames of onwaarheden
Story of my life broGamebuster schreef op dinsdag 02 september 2014 @ 14:55:
Niet dat ik het daadwerkelijk ga uitvoeren, maar het is wel een geinig idee
iOS developer
Met een laptop.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Dat zeg ik toch?.oisyn schreef op dinsdag 02 september 2014 @ 09:41:
[...]
Korte namen zijn juist beter uit elkaar te houden, en is daarmee dus slechter dan het gebruik van lange namen.
foo obfuscaten naar lo10l01l0lol1l en bar obfuscaten naar lo10l01l0l011l
is beter dan
foo obfuscaten naar ofo en bar obfuscaten naar rab
myTotallySaneVariableName obfuscaten naar lo10l01l0lol1ll1o0l101l0l10lo01l
is beter dan
myTotallySaneVariableName obfuscaten naar sbrilaaealtnmtlemnyvoeyaa
[ Voor 17% gewijzigd door RobIII op 02-09-2014 15:18 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.
Jammer is dat he
Let op: Mijn post bevat meningen, aannames of onwaarheden
Dat bedoel je misschien, maar dat zei je niet:
Rutix schreef op dinsdag 02 september 2014 @ 07:57:
[...]
Je begrijpt zijn post verkeerdhij bedoelt dat obfuscaten ook van 'myTotallySaneVariableName' , 'sbrilaaealtnmtlemnyvoeyaa' kan maken omdat het niet als doel heeft om zo klein mogelijk te zijn maar niet te lezen ;P
Samenvatting: van "myTotallySaneVariableName" "sbrilaaealtnmtlemnyvoeyaa" maken vind jij maar matige obfuscationRobIII schreef op dinsdag 02 september 2014 @ 08:45:
[...]
...wat ik dan maar matige obfuscation vind; bij kortere variabelenamen (zeg foo en bar) heb je een stuk minder permutaties en zijn de variabelen nog steeds goed uit elkaar te houden. Maar het valt wel onder obfuscation ja.
[ Voor 6% gewijzigd door .oisyn op 02-09-2014 15:34 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Hij zegt toch juist dat bij korte namen zoals "foo" en "bar" je dan maar heel weinig permutaties hebt, dus dat je graag ziet dat obfuscation niet alleen woorden husselt maar er langere namen van maakt?.oisyn schreef op dinsdag 02 september 2014 @ 15:32:
[...]
Dat bedoel je misschien, maar dat zei je niet:
[...]
[...]
Samenvatting: van "myTotallySaneVariableName" "sbrilaaealtnmtlemnyvoeyaa" maken vind jij maar matige obfuscation
Voor je laatste stukje: Ja, want je krijgt dan gezeur met korte namen, dus de VORM van obfuscation is slecht. Zijn zelf aangeraden vorm is een stuk minder makkelijk te lezen voor buitenstaanders.
[ Voor 28% gewijzigd door Merethil op 02-09-2014 15:35 ]
Dat zegt ie iddMerethil schreef op dinsdag 02 september 2014 @ 15:34:
[...]
Hij zegt toch juist dat bij korte namen zoals "foo" en "bar" je dan maar heel weinig permutaties hebt
Dat is iets wat je er nu zelf bij bedenkt dmv logisch redeneren, maar dat stond er niet. Het tweede stukje is op z'n minst ambigu, maar het eerste stukje duidelijk niet. Het ging om het gebruik van lange namen, Rutix zegt daar wat over, en RobIII reageert met "wat ik maar matige obfuscation vindt", en vervolgens begint ie over korte namen (ergo, hij vindt lange namen matige obfuscation)dus dat je graag ziet dat obfuscation niet alleen woorden husselt maar er langere namen van maakt?
Wederom, dat is wat ie bedoelde, maar niet wat er heel duidelijk stond opgeschreven in die ene post.Voor je laatste stukje: Ja, want je krijgt dan gezeur met korte namen, dus de VORM van obfuscation is slecht. Zijn zelf aangeraden vorm is een stuk minder makkelijk te lezen voor buitenstaanders.
Maar goed, deze metadiscussie is pas obfuscation.
Ontopic: ben het niet met RobIII eens dat jsahhrfegrlkajrhhawg duidelijker te lezen is dan lo10l01l0lol1ll1o0l101l0l10lo01l.
Verder heeft Korben eerder natuurlijk een heel goed punt. De namen boeien eigenlijk niet echt, een decompiler kan die dingen prima renamen naar iets wat wél goed uit elkaar te houden is.
[ Voor 14% gewijzigd door .oisyn op 02-09-2014 16:01 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Op een forum van Tweakers zou je toch verwachten dat (het overgrote deel van) de lezers dit zelf wel kan opmaken uit zijn manier van schrijven? Ik snap dat je er graag op wijst dat hij wat ambigu schrijft, maar je hebt het zelf begrepen, net als ik en waarschijnlijk vele anderen. Waarom dan nog een punt van maken?.oisyn schreef op dinsdag 02 september 2014 @ 15:40:
[...]
Dat zegt ie idd
[...]
Dat is iets wat je er nu zelf bij bedenkt dmv logisch redeneren, maar dat stond er niet. Het tweede stukje is op z'n minst ambigu, maar het eerste stukje duidelijk niet. Het ging om het gebruik van lange namen, Rutix zegt daar wat over, en RobIII reageert met "wat ik maar matige obfuscation vindt", en vervolgens begint ie over korte namen (ergo, hij vindt lange namen matige obfuscation)
[...]
Wederom, dat is wat ie bedoelde, maar niet wat er heel duidelijk stond opgeschreven in die ene post.
Maar goed, deze metadiscussie is pas obfuscation.
Ontopic: ben het niet met RobIII eens dat jsahhrfegrlkajrhhawg duidelijker te lezen is dan lo10l01l0lol1ll1o0l101l0l10lo01l.
Verder heeft Korben eerder natuurlijk een heel goed punt. De namen boeien eigenlijk niet echt, een decompiler kan die dingen prima renamen naar iets wat wél goed uit elkaar te houden is.
Nogal ja, ik ben eerlijk gezegd de draad volledig kwijt. Ik weet dat het over obfuscation gaat, maar wie nu precies wat heeft gezegd en waarom een ander daar dan wel of niet instemmend op reageert... sterker nog, ik weet niet eens zeker wie het nu wel of niet met wie eens is..oisyn schreef op dinsdag 02 september 2014 @ 15:40:
Maar goed, deze metadiscussie is pas obfuscation.
Ik ben wat gewend vanuit W&L, maar dit niveau van metaobfuscation verdient een pluim!
Misschien een nieuwe titel voor .oisyn: 'discussie metaobfuscator 2015'Dido schreef op dinsdag 02 september 2014 @ 15:55:
[...]
Nogal ja, ik ben eerlijk gezegd de draad volledig kwijt. Ik weet dat het over obfuscation gaat, maar wie nu precies wat heeft gezegd en waarom een ander daar dan wel of niet instemmend op reageert... sterker nog, ik weet niet eens zeker wie het nu wel of niet met wie eens is.
Ik ben wat gewend vanuit W&L, maar dit niveau van metaobfuscation verdient een pluim!
Ja net pas, met behulp van jouw post en het stukje wat RobIII in zijn laatste post heeft bijgeëdit maar wat ik niet zag omdat edits niet updatenMerethil schreef op dinsdag 02 september 2014 @ 15:48:
maar je hebt het zelf begrepen
[ Voor 29% gewijzigd door .oisyn op 02-09-2014 16:00 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
x010ooI0I2^11-0x111 dan toch wel? Of heb ik de discussie nou helemaal verkeerd begrepen?Coca-Cola schreef op dinsdag 02 september 2014 @ 15:57:
Misschien een nieuwe titel voor .oisyn: 'discussie metaobfuscator 2015'
Dit topic is gesloten.
![]()
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.