Spinsels op het web
actions » SearchLogin 185 articles • 11 Mar 2010

Recent articles in 'Web Dev'

Saturday, 30 Jan 2010

permalink Kill IE6! Kill it with fire!

yes Yes YES!!! Google about to end support for IE6.

Eindelijk een major bedrijf dat gewoon keihard zegt F.U. tegen de stakkers die nog IE6 gebruiken. (Ok, ok, Youtube heeft al een paar maanden een waarschuwingsbanner voor mensen die IE6 gebruiken).

IE6: Kill it with fire!

update: ook maar eens een ie6-warning popup ingebouwd op mijn eigen site. Als je een voorbeeld wilt zien klik dan deze testpagina.

• Wrote irmen at 22:19 (edited 2×, last on 04 Feb 2010) | read 9× | 0 Comments

permalink XML Billion Laughs attack, huidige stand van zaken

Ik was jaren geleden al eens aan het kijken naar de zogenaamde billion laughs xml attack, waarbij een doodsimpel xml bestandje van een paar honderd bytes zo'n beetje alle XML parsers (en web browsers!) op hun knieen bracht (enorm geheugengebruik en 100% cpu usage). Dit vanwege een exponentiele entity reference expansie. Meer info op Wikipedia: Billion Laughs.

Ik was nieuwsgierig of er tegenwoordig al wat vangnetten zijn geplaatst voor dit soort attacks, dus ik ging mijn million laughs testbestandje eens openen in een aantal web browsers. De resultaten zijn hoopvol! Waar een paar jaar geleden alle web browsers finaal onderuit gingen, zijn de resultaten nu ongeveer als volgt:

  • Firefox 3.6: geeft foutboodschap 'XML Parsing Error: recursive entity reference'.
  • Safari 4: geeft foutboodschap 'error on line 29 at column 18: Detected an entity reference loop'.
  • Chrome: zelfde foutmelding als Safari (logisch, want gebruikt ook Webkit engine).
  • Internet Exporer 8: gaat vrolijk het xml bestand proberen te parsen, maar dat duurt even :-P . Gelukkig is mijn testbestand slechts 'million laughs' en niet 'billion laughs' want anders had ik geen resultaat gehad na 30 seconden en 500 Mb geheugen gebruik.
  • Oxygen XML Editor 10: leest het probleemloos in maar zodra ik op validate klik gaat het mis ;-) Even geduld hebben en dan geeft hij wel netjes antwoord maar het kost 30 seconden en 1Gb geheugen.
  • Java6: score 2/4 (DOM en SAX ok, XMLReader crash, STAX StreamReader faalt)
  • Python2.6: score 1/4 (alleen lxml is ok)
  • .NET 3.5: score 0 (XMLReader crash)

Voor meer info, zie de read more.

    • Read more »
• Wrote irmen at 16:07 (edited 7×, last on 02 Feb 2010) | read 23× | 0 Comments

Saturday, 02 Jan 2010

permalink Mac OS X: user aan een group toevoegen, want lastig om steeds su te moeten gebruiken

Mijn web server draait onder het user id 'www' (en group 'www') uit security overwegingen. Maar zelf log ik altijd gewoon als 'irmen' in. Het is dan ook lastig om files toe te voegen of te editen in de file tree van de web server, omdat ik altijd m.b.v. su rechten moet krijgen om files van 'www' te mogen veranderen.

Daar is een eenvoudige oplossing voor: zorg dat de bestanden writable zijn voor de group (chmod g+w) en voeg mijzelf toe aan de 'www' group. Onder Linux zou ik waarschijnlijk /etc/groups editen, maar onder Mac OS X gaat dat niet zo eenvoudig.

Voor OS X 10.4 (Tiger) is dit de manier om een user aan een group toe te voegen.

Stel de user 'irmen' moet dus aan de group 'www' toegevoegd worden. Dan moet je de naam van de user (niet de uid) in Netinfo Manager aan het lijstje users dat bij een group staat vermeld toevoegen.

  • Start Netinfo Manager.
  • Ga naar groups > www
  • klik in het properties lijstje
  • als er nog geen users property is, maak die dan aan d.m.v. de new button linksboven
  • voeg "irmen" toe (de user name, niet de id) aan de users property van de geselecteerde group
  • Sluit Netinfo Manager.
  • Log eventueel opnieuw in.

Onder Mac OS 10.5/10.6 (Leopard/Snow Leopard) gaat het anders, daar ontbreekt Netinfo Manager.

• Wrote irmen at 02:19 | read 8× | 0 Comments

Saturday, 22 Aug 2009

permalink SVG en Canvas in IE: als Microsoft het niet voor je doet, dan zelf maar

Ik geef niet zo heel veel om wat voor dingen Internet Explorer allemaal niet ondersteunt (HTML5, SVG, Canvas, proper CSS, fast Javascript, enz).

Maar ik zie het nog wel gebeuren dat ik een keer gebruik ga maken van SVG en Canvas dingen. Dan is het wel grappig om te weten dat er javascript libraries zijn, gemaakt door derden, die in meer of mindere mate die dingen ook laten werken in IE:

De SVG library rendert in Flash in IE, en gebruikt native browser SVG in browsers die wel bij de tijd zijn (Firefox, Safari, Chrome). Flot gebruikt onder water Excanvas geloof ik, om de plots in te tekeken.

Edit: Ok het kan nog extremer. In het kader van "If they won't fix it, we will!"...: vervang gewoon de hele IE render engine door die van Google Chrome! ^_^

• Wrote irmen at 18:35 (edited 1×, last on 23 Sep 2009) | read 24× | 0 Comments

Wednesday, 08 Jul 2009

permalink HTTP header madness: diverse problemen met Yahoo YUI, Safari en Firefox

Afgelopen week een aantal vreemde problemen tegen het lijf gelopen rondom HTTP headers:

  1. Apple's Safari normaliseert de HTTP headers die hij van de server krijgt.
  2. Het Connection object uit Yahoo's YUI library voldoet niet aan de standaard bij het opvragen van HTTP headers.
  3. Mozilla's Firefox doet raar met caching van HTTP headers.

Achtereenvolgens is dat dan 1) raar; 2) API bug; 3) bug. Hieronder zal ik uitleggen wat deze problemen precies inhouden.

    • Read more »
• Wrote irmen at 22:56 (edited 3×, last on 12 Jul 2009) | read 124× | 1 Comments

Sunday, 20 Jan 2008

permalink Upgraden moinmoin wiki

UPDATEN VAN MOINMOIN WIKI

Omdat ik elke keer vergeet hoe MoinMoin geupgrade moet worden die ik hier als wiki software gebruik, heb ik het maar eens uitgetypt:

  1. download nieuwe moinmoin versie van de download site De meest recente versie op dit moment: moin-1.6.0.tar.gz
  2. uitpakken en cd naar de installatie directory
  3. moinmoin installeren in standaard Python framework locatie, en de default moinmoin data files in ~irmen/moininstalldata plaatsen (eerst inloggen als root!) :
    $ python setup.py install --install-data='/Users/irmen/moininstalldata'
  4. kopieer de static htdocs files uit de moininstalldata naar de web server in snakelets, en zet de file ownerships op www:www:
    $ cp -r ~irmen/moininstalldata/share/moin/htdocs ~irmen/Projects/www_snakelets/webapps/wiki/
    $ chown -R www:www ~irmen/Projects/www_snakelets/webapps/wiki/htdocs
  5. kopieer de static system en help files naar de juiste plaats, en zet de file ownerships op www:www:
    $ cp -r ~irmen/moininstalldata/share/moin/underlay ~irmen/Projects/www_snakelets/moinmoin/python/
    $ chown -R www:www ~irmen/Projects/www_snakelets/moinmoin/python/underlay
  6. check of er iets is gewijzigd in de wikiconfig.py. meestal kun je deze file gewoon ongewijzigd laten. Bestaande file: ~irmen/Projects/www_snakelets/webapps/python/wikiconfig.py Vergelijk met: ~irmen/moininstalldata/share/moin/config/wikiconfig.py
  7. controleer even of de file permissie van de wikiconfig file goed staat (chmod a+r) anders krijg je een error bij het opstarten dat hij wikiconfig.py niet kan importeren
  8. bij opstarten van Snakelets webserver logt hij de moinmoin versie en naam. als er bij het tonen van een pagina nog iets mis gaat, is er misschien iets gewijzigd in de Request.py, dan moet je wikisnakelets/wiki.py editen.
• Wrote irmen at 15:57 (edited 2×, last on 18 Feb 2009) | read 112× | 7 Comments

Wednesday, 07 Jun 2006

permalink Snakelets+Frog survives Slashdotting... but with slight hiccups

Cliff Wells' blog entry titled "Why the Light Has Gone Out on LAMP" was featured on Slashdot. Cliff uses Frog as his blog tool... So this is the first time -that I know of- that Snakelets+Frog had to withstand a Slashdot effect :-D

Cliff mailed me about it, to tell me two things:

  1. the server survived (only one or two timeouts) :-)
  2. there were some problems with users placing comments :-(

While it is good to know that Snakelets can withstand a moderate slashdotting, the following problems sometimes occured in the commenting system of Frog:

  • Frog was using the same comment id for multiple comments (ouch!)
  • User got exception traceback in Frog code, it was no longer able to fetch an id from the request scope

It seems Frog has concurrency and/or timeout issues with placing comments. These are bugs that have to be fixed. So expect a new Frog version sometime soon ;-)

update: I have found and fixed a problem in Frog related to the double-id issue. The traceback crash is still there.

• Wrote irmen at 11:46 (edited 2×, last on 13 Jun 2006) | read 43× | 2 Comments

Monday, 15 May 2006

permalink Tooltips (mouseovers) in non obtrusive javascript+CSS

BoxOver

Deze tooltip 'engine' is als blackbox aan te roepen zonder enige custom javascript te hoeven gebruiken.

Gebruik: 1. Onderaan de pagina moet je de .js file includen <script src="boxover.js"></script>

2. Voor ieder html element op de pagina dat je van een mooie custom tooltip wil voorzien (zoals een popup helptekst) zorg je dat in de "Title"-property de tooltip-parameters van een waarde voorziet.

voorbeeld: <img src="helpicoon.gif" title="header=[Help voor bruto jaarinkomen] body=[help tekst over het bruto jaarinkomen] hideselect=[on] fade=[on]" /> Dit is ook echt alles!

Wat je hier ziet is dat a) de header en body van de tooltip worden gevuld, b) alle selectboxen op de pagina even verdwijnen om te voorkomen dat ze door je help tekst heen komen en c) dat de tooltip met een fade-in wordt weergeven.

Er zijn nog meer veel parameters en voorbeelden beschikbaar op de website! En het ding is gratis (GNU licence).

• Wrote irmen at 17:01 | read 440× | 2 Comments

permalink (staaf)grafieken in CSS

Een van de meest gebruikte grafieken is toch wel de staafgrafiek denk ik. Staafgrafiekjes in een website kun je met een of ander server-side component ingewikkeld gaan zitten maken en dan een korrelig gifje gaan ophoesten. Waarom zou je het zo omslachtig, traag en lelijk doen, als je met een beetje CSS ook perfecte staafdiagrammen kan maken op basis van normale HTML tables/lijsten?

Een aantal voorbeelden:

• Wrote irmen at 16:57 | read 771× | 0 Comments

Friday, 14 Apr 2006

permalink Some slight server changes

I've updated the Snakelets server software on this site.

The changes:

  • Slight URL change for my Blog pages. The /snake/ prefix is gone. (If you access the "old" page, you will be automatically redirected)
  • No more Apache reverse-proxy. Snakelets itself is now running on port 80 directly. Easier maintenance, more flexibility and hopefully also a tad faster than the old setup.
  • New Snakelets CVS version has the option to run as a different user. This is, like with Apache, required from a security point of view.
  • My Python WIKI is again available in the latest MoinMoin version running as a Snakelets webapp (it was running as CGI under Apache).

The new Snakelets code is only in the current CVS version, there's no new official release yet.

• Wrote irmen at 23:59 (edited 3×, last on 01 May 2006) | read 36× | 0 Comments

10 shown; more articles may be found in the archives. The permalink icon is the article's permalink.
Process times: page=0.342 request=0.351 cpu=0.330