Archiv für Februar 2009

IE Death March 2009

Sonntag, 22. Februar 2009

iedeathmarchIch hab das Thema nur überflogen, bzw. mich nicht wirklich mit der norwegischen Initiative beschäftigt. Ich hab auch nichts gegen Microsoft oder den IE grundsätzlich. Aber dem, unter Web-Schaffenden auch besser als “Krankheit” bekannten, Browser namens Internet Explorer 6 würde auch ich 2009 keine Träne mehr nachweinen. Die freundliche und (wohlgemerkt) dezente Art, den Besucher einer Webseite darauf hinzuweisen dass seine ‘Browsing Experience’ durch die Wahl seinen Browsers eingeschränkt ist und er seinen Computer bzw. die darauf befindlichen Daten unnötigen Gefahren aussetzt finde ich gut. Inzwischen ist es eigentlich auch nurmehr unverständlich warum sich dieser Browser so hartnäckig in den Statistiken hält.

Bei solchen Aktionen (stopIE, browsehappy, und wie sie alle hießen) möchte man sich eigentlich von denen distanzieren die da am lautesten mitbrüllen. Aber im Endeffekt spricht 2009 auch nichts mehr dafür die Verwendung dieses Browsers mit stets immensem Mehraufwand seitens der Webschreiberlinge zu belohnen. Stattdessen könnte man die Zeit besser in Innovation statt Reparatur stecken. Also wie ich finde eine gute Sache, dass sich scheinbar große Webseiten beteiligen. In erster Linie für die Benutzer. Aber ja, zugegeben… an letzter Stelle auch für den gemeinen Webseitenschreiber. Ich pack das mal auf meine Todo-Liste für dieses, meine, doch recht kaputtete Blog-Template :O
(via Webmasterpro - die auch ein Screenshot von einem dezenteren Hinweis haben)

A very simple pagination with PHP

Samstag, 21. Februar 2009

or: the dangerousness of simple mathematics

I guess many people had this problem before and I think everybody managed to solve this quite similar. Anyways, just in case this is useful for anybody: here’s how I added a pagination to a site recently.

Given you have an array of products for example. Or maybe search results, a list of articles… something like that. Unfortunately they are too many to display them on a single page. Well, sure, you could but let’s be honest: that isn’t an option as the page would exceed its “scrollable-with-no-harm-to-scroll-fingers” length. And you don’t want to get sued by your visitors, right ;)
Ok, so you’re going to add a nice pagination to your site, so that everybody is happy.
What I found out to be a bit tricky was to calculate the actual number of pages. We need that number so that we know, how many page links we will show next to our current view.

Two simple examples to illustrate the probelm:
Let’s say we have 8 items. 8 divided by 4 is 2, so we’re going to need two pages. No big deal.
Now we try this calculation with 9 items. 9 divided by 4 gives us 2.25. So we will clearly need a 3rd page for product number 9, but how do we calculate this from our result?

  1. $itemcount = $res->length();
  2. $pagemin = $itemcount / 4;
  3. $pagemax = ceil($itemcount / 4);
  4. if ( $pagemax - intval($pagemin) === 1) ) {
  5. $pages = $pagemax;
  6. } else {
  7. $pages = intval($pagemin);
  8. }

The code explained

That’s why I compare two values here: the actual division result and the next bigger integer (that’s what ceil returns). If they differ by 1 we have a scenario where we do want another page, so we pick the bigger result as our page number (lines 4-7). If not we are just happy and use the smaller number.

So now that we know our actual page count we can do something (slightly simplified) like this:

  1. while($i = 0;$i < $pages; $i++) {
  2. if ($i === $_GET['page']) {
  3. $class = ' class="current"';
  4. } else {
  5. $class = '';
  6. }
  7. print "<a href=\"?page=$i\" title=\"Page $i of $pages\"$class>".($i+1)."</a>";
  8. }

pagination
With a little bit of styling this even looks nice. And of course, this is just a start. You also might want to add “previous” and “next buttons”, or those “first page”, “last page” buttons, limit the maximum number of page links shown, or you could center the currently viewed page in the middle, hide the previous button on the first page, etc… There are a lot of fine tuning options that will improve the user experience of your pagination.

*weeet woot doot doot bleep deet deet doot*

Freitag, 20. Februar 2009

r2d2 Was hat das zu bedeuten? Ganz einfach: R2D2 zwitschert sich einen bei Twitter. Genaus wie der ganze Rest der Star Wars Helden. Sehr amüsant. Wer das nicht lustig findet darf gern den Arzt seines Vertrauens konsultieren oder der Al Quaida beitreten…

Minify wird immer besser

Montag, 16. Februar 2009

Die Minify Bibliothek, mit welcher man CSS, Javascript und HTML-Dateien komprimieren kann wird immer besser und intuitiver. In den aktuellen Versionen gibt es sogar ein kleines Hilfstool, welches einem erstellen von Dateigruppen hilft. Inzwischen kümmert sich das Skript auch selbst um die gzip-Komprimierung der bereits “minifizierten” Dateien.
Im Zusammenhang mit Minify auch sehr interessant: die automatische (serverseitige) Versionierung von CSS und Javascript da man ja irgendwie doch Kontrolle darüber braucht ob eine Datei gecached werden soll.
Mich würde interessieren wie und wann andere Minify einsetzen - insbesondere wenn man ein Javascript ändert oder erweitert und der Punkt “Javascript-Debugging” angesagt ist. Einer der, wie ich finde, nervigsten Nachteile an der Performance-Optimierung mit Minify (Fehler in Zeile 1 - Ja klar, es gibt nur eine Zeile?!).

Postbox Beta

Montag, 16. Februar 2009

Vor einiger Zeit hatte ich mal meine Erwartungen an die nächste Thunderbird Version abgetippt. Von der ‘Shredder’-betitelten Vorab-Version werden die nicht ansatzweise erfüllt. Umso besser, dass ich dieser Tage auf eine weitere Vorabversion eines Mail-Clients gestoßen bin: Postbox. Postbox basiert auf der gleichen Technik wie der Thunderbird - gerade deshalb tu ich mich etwas schwer Postbox irgendwie zu bewerten. Ich finde in der Feedansicht keine Vorzüge gegenüber Thunderbird, und auch das markieren von Nachrichten mit eigenen Schlagworten/Tags ist zwar nett, nützt mir aber nichts, wenn ich diese nicht intuitiv finden und benutzen kann. (Das ist natürlich wieder so ein Fall bei dem das Problem vermutlich auf der anderen Seite des Monitors sitzt… ) (weiterlesen…)