Tech 10. Sep. 2019

Next.js: Behaviour of getInitialProps with SSR

Following the tutorials, getInitialProps is meant to work “on both server and the client”, which is totally correct.

Using server-side rendering (SSR) without any enhancements, this leads to a pwa, which is pre-baked for seo crawlers (content within html markup), but still loads content by the api, even if all data is within the rendered page already.

So be aware of implementing some client/server logic, when loading content by api is needed, and when it can be avoided.

read more

Tech 21. Jun. 2019

What I really like to do ...

In general, I am a genaralist. Project management, business management, website creation, design of complex software - it all feels like the same thing from different perspectives.

And somehow it is. It’s about collecting, manipulating, enriching, structuring, publishing and searching content or data.

That’s what I liked about content and document management. It is necessary to automate accounting and tax processes. It is the core of useful intranets as communication platforms. It is essential for task, problem and project management. It is even important in communicating with citizens for our local council.

It is all about content and data streams, flows, processes and channels.

With today’s technologies, I can build small solutions on my own while I’m on the train. Complex and large projects, which require an entire development team, are gladly led and managed by me. Manager and Product Owner I like to advise. I like to share my point of view with visionaries.

To realize amazing web solutions - whether small or really big - and bring them to life. This is my passion.

read more

Tech 16. Feb. 2019

boomerang - a no privacy solution

As looking for scheduling features for G Suite, one of the first hits might be boomerang. The feature set sounds great, but I wondered how they schedule the email sending technically.

Well, they do not explain it, so I did some research within their privacy policy. Let’s see …

Information We Collect Through Providing You With the Boomerang Service As you use the Boomerang Services, we may collect certain information about your Communications. We collect:

Now it starts:

the contents and header information from the Communications you send and receive through the service […] include at least the senders and recipient’s email address, subject line, message size, the date and time […], the system name and IP address […], […] geolocation data from your mobile device, […] information about events in your calendar, such as event titles, attendees, locations, and meeting times. responses from the recipients of your Communications […].

And hey, it’s perfectly expanding your privacy:

This information [..] allows us to analyze the content of your email […].

Tech 22. Jan. 2019

goodby facebook

So, now some new year projects are being completed. Number one: Download data from facebook and close my account. Task done.

Tech 4. May. 2018

The real value of JAMstack

It’s not a secret that I am a fan of JAMstack websites. Like REST - which is basically using the core communication of HTTP - JAMstack is basically about using static websites - with some more around.

Static websites alway were great due to:

  • best possible server side loading performace,
  • best security, and
  • low complexity.

Well, there are some downsides like the question how to manage the content by editors, using dynamic and personalised content and so on.

read more

Tech 20. Mar. 2018

Podio as CMS for a JAMstack website

In context of a collaboration tool evaluation for a client some years ago, I had first contact with Podio. And the most amazing aspect of Podio is the flexible data model. Together with all the other features, that makes Podio the perfect tool for internal data management.

Using Contentful in some web projects and trying out the content stack, the concept felt quite familiar and I decided to have a second look at Podio - now as CMS for websites.

read more

Tech 4. Dec. 2017

An evaluation of NetlifyCMS

Netlify is doing a really great job with their hosting and build platform - specially for JAMstack addictive persons like me.

With NetlifyCMS they brought an idea to code, which for sure other developers had before as well - using git as content repository.

read more

Tech 2. Jun. 2017

Using GulpJS as website generator

Usually “GulpJS is a toolkit for automating painful or time-consuming tasks in your development workflow”. And that’s what we are using gulp for most of the time. Specially the asynchronous approach combined with controlling the flow as parallel or serial tasks and the pipelining make gulp quite powerful.

read more

Tech 20. Apr. 2017

MOTOR Digital meets

MOTOR is constantly looking for great software and service solutions, which can be used as flexible components for different kinds of projects.

read more

Tech 11. Nov. 2016

Mac Port Forwarding by Ghostlab

If you are using Ghostlab anyway, you could use it as well for port forwarding - because in fact the tool is exactly doing this.

In addition use a DDNS service and a port forwarding on your router and wow - the external request goes directly through to my docker container.

read more

Tech 4. Nov. 2016

HTTP header "x-zapier-jobs"

Thats’ great. Zapier advertises their recruiting by HTTP headers within webhooks:

"x-zapier-jobs": "Woooo, a hacker like yourself should consider working at Zapier!"
"x-zapier-jobs-link": ""

read more

Tech 3. Nov. 2016

Trigger a Distelli build by Zapier

Cool how easy some easy process chains can be build. E.g. on an content change at contentful just configure a webhook to Zapier and trigger a distelli build by Zapier. That imports the new content and creates all needed website updates. Great.

Of course zapier is not needed in the explained scenario, but we have additional actions defined, e.g. a slack notification on content changes an afterwards on deplyoments.

read more

Tech 25. Oct. 2016

Google Analytics without cookies

I haven’t heard about this before, but it is possible by default to use Google Analytics without cookies. Well, Google does not recommend this, but it is working just fine.

To make it work, some issues have to be solved:

  • deactivate the cookie storage
  • implement an alternative for the user id

read more

Tech 1. Oct. 2016

Performance boost for TYPO3

TYPO3 CMS is not known as the fastes content management system. But the developer team did a lot of cleanup and optimisation the last years.

But using PHP7, a static file cache and a crawler constantly triggered by the scheduler, the usage of HTTP/2 and Nginx instead of Apache and having a hoster using SSD disks really speeds up TYPO3.

It’s amazing to see TYPO3 runing that fast.

read more

Tech 25. Sep. 2016

My current favorite service based website tech stack

  • Contentful as GUI for content editing
  • Jekyll for template and website rendering
  • Cloudianry for image scaling and video transcoding (incl. responsive and cdn delivery)
  • Continous deployment by Distelli
  • Social media import and export by Zapier
  • Cloudflare for HTTPS/caching and HTTP/2 as well as SSL

    read more

Tech 16. Sep. 2016

BrowserStack screenshot service uses emulators

In my personal roadmap on automated tests integrated in a countious deployment strategy, my first phase was setting up screenshot regression tests. Within this phase I wanted to extend the tests from a simple setting at GhostInspector to cross device/browser tests. So I’ve got a subscription at BrowserStack with the aim to trigger the screenshot API an generate all browser screenshots automatically.

But on this way I recognizes 1) a lot of timeouts, 2) different browser display behaviours than on real devices, and 3) stange effects with backgrounds and fixed/sticky elements on longer pages. The first issue makes automation impossible, because you cannot trust on reliability. The second issue made the test results not usable - if the screenshot on android 4.4 has no main menu, a alarm rings in the head of a tester, but with not using emulators, everything is fine.

read more

Tech 21. May. 2016

Jekyll as frontend development tool

I am used to enforce a strict separation of frontend and backend development in web projects. Major reason is the amount of effort which is needed for quality assurance for frontends and the risks of changing frontend details while implementing backend logic. So with this separation, projects got a quality gate for the frontend independent of the backend and process complexity.

As I am using Jekyll quite a time for my own website and some smaller client project, I learned to love the easiness while utilising strong features at the same time. The gracious combination of features like

  • a template engine for separating content from layout markup while use things like if, else, loops and more
  • include templates with parameters
  • scss built in
  • having static html at the end makes Jekyll quite an easy and strong tool.

So I started to use it for building static web frontends as prototype phase before going into cms or shop implementation.

read more

Life 2. Apr. 2016

Next journalism?

In a meeting at Sternwald we asked who has a newspaper subscription - and there were only a few. The hypothesis is, that the format todays generation likes to consume, does not exist yet.

I thought about that: I like to read my local newspaper, because real local news are not available in the web in a proper format. Additionally I like to read (and listen) to some specialised blogs and podcasts like

read more

Tech 18. Mar. 2016

TYPO3 with Nginx using RealURL and Static File Cache

While using the Docker TYPO3 Boilerplate and moving to a hoster who likes Nginx more than Apache, I gave Nginx a try for a TYPO3 installation.

So as expected nothing really failed. The only challenge was to configure Nginx for RealURL (quite easy) and Static File Cache (a little more advanced, because the given templates are not all complete).

read more

Tech 26. Feb. 2016

Experiences with the Docker TYPO3 Boilerplate

A classical situation: Caused by some misconfiguration on a server a friends website got down. To solve the problem in long-term we decided to move the TYPO3 installation to a specialised and managed hosting company.

But for moving the website we had to do an update of TYPO3 as well and I had the need to setup a development environment. My former setup on my local machine was gone through several OS updates and so on. And to make it even harden, we needed two different setups - one for the old system and one for the updated TYPO3 with newer PHP and MySQL versions.

So as I am using docker anyway at other projects, this seemed the best way - even if I was afraid to waste much time for setting up a clean docker environment.

read more

Tech 1. Feb. 2016

Continous integration with Distelli

It’s like a buzz word: Continous Integration.

All talk about countinous integration, high frequent releases and automated tests. But in regular business there is no one really doing it. At software and web development companies these practices are more a kind of vision than reality. For sure they are companies doing it and generate benefits for their business modell. But my guess is, that most who use a continious integration process have a digital business model and the DNA of the company supports a straight strategy. As software developer for non digital companies it’s mostly a dream nobody likes to pay for.

read more

Tech 22. Jan. 2016

ecommerce evolution leads to something like moltin

In several projects I could watch the evolution of ecommerce platforms in a way like that:

  • start by using a shop system like magento or shopware
  • using and extending the api
  • integrate third party apis
  • integrate rich clients and non-web fromtends like apps
  • thinking about rafactoring
  • creating an ecommerce api layer with the goal of a service architecture and finally a baas system

read more

Life 23. Oct. 2015

The drawback of digital data

We know about hacking SIM cards in mass at least since the beginning of 2015. Now a fraud series became public where criminals simply ordered SIM card copies at Telekom and others. Obviously mobile devices became more and more the focus on using security lacks in the communication chain.

The glory of software and digital data is the easiness of creating and distributing copies with nearly no effort - that is the drawback on security and privacy as well.

read more

Tech 4. Oct. 2015

Impressed by Model Driven Architecture

Well, not that commen anymore for usual web based software, but the generation of a significant amount of core code from models, e.g. data models or apis by uml, moves the priority from product quality to process quality, which ensures a higher product quality on living software systems.

In the sense of ISO9001 quality management the key to success is the process quality, which can be ensured over various unique systems and development projects.

read more

Tech 4. Oct. 2015

Impressed by Behavior Driven Development by Dan North

The idea of living and executable specifications combines the big questions on how to specify, how to test automatically and how to keep up to date all specifications and tests.

Bringing the specification to live and merge it with the quality insurance instance, closes the gap from waterfall-like linear models to the approach of the v-model.

Experience: Before Sternwald it was more theory an wish to me, but here we created detailed specs with stories and wrote tests with jbehave. No hassle with regression tests anymore.

Tech 18. Aug. 2015

Get rid of git branches

Recently I had to hop into a existing project and tried to manage dev, test, stage and production version in git and JIRA, which is no big deal at all. Because of the longer history we had about 100 feature branches within the git, which made it a little unconvinient to ge an overview. So I tagged all historical feature branches and removed them from origin. And because of the large amout I found some command line tricks to to that as batch:

git branch -r | awk -F/ '/\/PREFIX/{print $2}' | xargs -I {} git tag archive/{} origin/{}
git branch -r | awk -F/ '/\/PREFIX/{print $2}' | xargs -I {} git push origin :{}
git fetch -p

Tech 14. Aug. 2015

No smooth scrolling with overflow-x:hidden

A while ago I noticed that in most case you need a overflow-x:hidden on body to avoid a ugly horizontal scrolling of some pixels at smartphones. See as well my post Overflow-x makes scrolling choppy at mobile for some effects using it wrong.

Now I was hit back by the fact, that a smooth scrolling by jQuery scrollTo is not possible while overflow-x:hidden is set.

At the web I found some suggestions like: “But this bug occurs only if the html and the body have the overflow-x, so you can just remove theoverflow-x for the html and it’s okay for you I think.”. But in fact, I was not able to get it running.

Tech 12. Aug. 2015

Icons in email subjects

From time to time I receive some emails with nice icons in the subject and I was curious about how they are doing it. Maybe I am the last at the web to found out, but now I did.

It’s done by so called emoji icons which are included in the UTF-8 character set.

read more

Post 21. Jul. 2015

Pay by social share

That’s a great idea for free digital products: don’t give your stuff away for nothing, but ask for a social sharing action. Axure is doing that on their library market place.

Tech 16. Jul. 2015

Replace boot2docker with Kitematic (if on Mac)

Recently we had a lot of trouble getting our docker setup running on local developer machines. We had problems like non working volume mounts, self shutting down mysql containers and missing permissions on folders with almost every permission set.

And that was definetly not the goal of using docker.

As it turned out the problems come from the vm of boot2docker. boot2docker is using auto mounted shares on the local mac file system, which is in genaral a nice idea. But at this point the system user ids start to mix up and usual file system permissions do not work properly in all cases.

read more

Tech 15. Jul. 2015

Show hidden files in Mac Finder

Category dev clipboard: Enter “defaults write AppleShowAllFiles 1“ on mac terminal to set Finder to show hidden files by default.

Now I can work much easier in my git repos and .docker folders.

read more

Tech 8. Jun. 2015

Port Forwarding to use a local docker with public address

Sounds easy and afterwards it seems easy.

The required setting: For development on an existing platform we use docker with several containers for database, application, search and so on. Here the local setup by docker is quite easy an well prepared by some scripts for define local properties and replacements. But due so a integration to external systems, the virtual docker environment has to be accessible by a public address even for local development.

So I needed a sequence of port forwardings.

read more

Tech 14. Apr. 2015

Overflow-x makes scrolling choppy at mobile

I don’t know exactly why but at mobile devices often the content width is larger than the screen width which leads to a ugly horizontal scrollig. This is easy to fix by adding a

overflow-x: hidden;

to a wrapper.

I tried to add it to html and body - the curious ting is, that leads to a choppy scrolling at mobile devices. Setting to only one wrapper - I did it on body - everything is fine.

body {
	overflow-x: hidden;

By the way: For -webkit-overflow-scrolling: touch; I could see no effect.

See more here as well:

Tech 13. Apr. 2015

Fasten CSS Transitions on mobile devices

It’s common to have some performance issues with animations on mobile devices. But on modern devices sometimes the promlems seem to be too heavy. Now I found a reason. “Webkit doesn’t involve the GPU unless you’re doing 3D transforms”.

So just force the browser to initialize GPU by CSS:

-webkit-transform: translateZ(0);


Thanks a lot.

Post 14. Jan. 2015

Verschiebung bei Statusbewertungen - in Projekten und überall

Im Kontext des Projektmanagements bzw. der Diskussionen über die Verbesserung von Projektmanagementprozessen und der damit verbundenen Kundenkommunikation, stellt sich immer die Frage wie man den Projektstatus möglichst einfach aber dennoch korrekt aggregiert ermittelt und darstellt. Am Ende steht zumeist ein Ampelsystem, welches mehr oder minder gut mit Daten belegt ist:

  • grün: der Status entspricht der Planung
  • gelb: der Status liegt leicht hinter der Planung
  • rot: der Status ist kritisch und die Projektziele sind gefährdet

Das grundsätzliche Problem bei diesem Ansatz ist, dass es eine ausschließliche Negativskala ist. Damit wird allerdings der Realität zum einen nicht entsprochen und zum anderen das Bild des Status und damit auch die Erwartungshaltung der Beteiligten verzerrt.

read more

Tech 6. Jan. 2015

E-Mail Sicherheit

Spannend, wie Unternehmen den Prozess zur Absicherung Ihrer Netzwerke gestalten. Es wirkt recht umständlich aber immerhin konsequent. In der Signatur der “normalen” E-Mails wird explizit gebeten, Daten nicht unverschlüsselt zu versenden. Nun habe ich verschlüsselte Anhänge versendet - da ich keinen Public Key des Empfängers habe - und es gibt dann, sicher aufgrund von anderen Sicherheitsaspekten wie Virenschutz usw., eine manuelle technische Prüfung des Anhangs.


read more

Life 8. Dec. 2014

Termin über verschiedene Zeitzonen

Wow. Im Google Kalender kann man einen Termin mit unterschiedlichen Zeitzonen für den Beginn und das Ende einstellen.

So kann ich dann tatsächlich meinen Flug korrekt im Kalender eingeben und alle Kollegen wissen wann ich nicht erreichbar bin.

Tech 25. Nov. 2014

Google Calendar API v3 angebunden

Letzte Woche stellte Google nun endgültig den Betrieb der “alten” Data APIs ein. Somit musste für 88vier auf die schnelle die neue Google Calendar API v3 angebunden werden.

Glücklicherweise hatte ich damals bereits eine abstrakte Model Klasse in der TYPO3 Extension vorgesehen, sodass tatsächlich “nur” die API-Requests umgestellt werden mussten.

Tech 13. Sep. 2014

Impressed by 37signals

As working remotly since 2011 y lot changed in my daily business. As well clients and specially the project culture is shifting.

In this context the philosophy of 37signals - really nice expressed in their books - impressed not only me.

read more

Tech 15. Apr. 2014

Cloud basiertes Markdown Blog

Warum, wieso und wozu?

Die eigene Website ist ja immer auch Ziel von wirren Ideen und Inkubator Projeken. So auch mein Blog. Neben den Spieltrieb haben die bisherigen Lösungen aber auch immer Nachteile gehabt. Das massivste Manko der Web CMS Lösungen (Wordpress, Drupal, TYPO3 und Co.) ist, dass sie eigentlich nur online funktionieren. Und auch mit Blogging-Apps muss man i.d.R. vor dem Publishen mal im Web CMS mal nachsehen was aus dem Beitrag geworden ist. Da meine Zeitfenster zum Bloggen sich aber auf Lazenzzeiten unterwegs und viel ohne Internet (Zug, Flugzeug) beschränken, ist das ein Problem. Hinzu kommt die Datenhaltung. Meine Blogbeittäge möchte ich nicht in einer MySQL Datenbank, sondern in einem einfacheren, besser greifbarem und beständigerem Format aufbewahren. Mehrere Migrationen von CMS zu CMS mit zumeist dann veralteten Versionen haben hier einen bleibenden Eindruck hinterlassen. Außerdem möchte ich zur Bearbeitung von all meinen Geräten zugreifen können. Darauf aufsetzend möchte ich dann einen automatisierten Publishing Prozess inkl. Social Media Marketing usw. haben.

Die Vision ist also:

  • Schnell, einfach und überfall in einen einfachen und nachhaltigem Format Blog Posts erstellen und diese automatisch auf meine Website, Facebook, Twitter und Co. pushen
  • Und als Zuckerguss noch die
  • Rückintegration von Facebook Posts in diese Blog Datenquelle.

read more

Tech 12. Mar. 2014

Responsive Content Formatting - Display-abhängige Zeilenumbrüche - ein Workaround

Technisch oft vernachlässigt aber inhaltlich von Redakteuren häufig bemängelt werden Probleme bei der Steuerung oder ebene nicht-Steuerung von Zeilenumbrüchen abhängig von bestimmten Geräteklassen bzw. Displaygrößen. Dem Thema kann man sich in guter alter Manier der Internet Pionierzeit mit tollen Workarounds nähern. Gezielte Zeilenumbrüche anhand eines Beispiels:

Dieser Text liegt vor:

Ich möchte einen recht langen Text als Überschrift setzen und bestimmte Umbrüche steuern.

Wenn der Platz irgendwann schmaler wird möchte ich bestimmte Umbrüche vordefineren - wie es bei Marketingtexten häufig der Fall ist:

Version 1:

Ich möchte einen recht langen Text als Überschrift setzen und
bestimmte Umbrüche steuern.

Version 2:

Ich möchte einen
recht langen Text als
Überschrift setzen und
bestimmte Umbrüche steuern.

read more

Tech 10. Mar. 2014

Pure CSS Sticky Navigation

So schöne Dinge man mit Javascript auch machen kann - man muss es nicht immer tun. Dazu habe ich schon verschiedene Male geschrieben. Heute zu einer reinen CSS-Lösung für eine Sticky-Navigation. Die Anforderung an eine Sticky-Navigation lautet i.d.R. in etwa so: Beim Scrollen soll am oberen Fensterrand das Menü stehen bleiben damit der User immer das Menü im Zugriff hat. Der (zumeist darüber liegende Header) kann dabei weggescrollt werden. zusätzlich hat das Menü auf Smartphone ggf. eine andere Darstellung und hat nicht das volle Menü am oberen Rand sondern bspw. nur einen Home-Button oder ein sogenanntes Burger-Menü. Die Idee ist einfach: Man nutz die Möglichkeit Layer per z-Index übereinander zu legen und deren Verhalten beim Scrollen per postion-Angabe zu definieren.

read more

Life 11. Nov. 2013

ReCaptcha - Jetzt auch Foto-Erkennung

Offensichtlich arbeitet ReCaptcha nun auch mit Fotos. Das Feld der Human Computisation wird wohl von der Verbesserung von OCR-Software auf die Fotoerkennung ausgeweitet.

Tech 28. Sep. 2013

Die Tiefen des base64-Encodings

Bis vor einigen Stunden hatte ich offensichtlich keine wirkliche Ahnung was sich hinter einem base64-Encoding versteckt. Außer ein paar encode/decode Aufrufen in PHP hatte ich hier bisher keinen Bedarf.

Nun wollte ich aber Massen an Daten per Java über die HTTP-API an Mixpanel schicken - und wumms. Jetzt weiß ich mehr über die verschiedenen Varianten der Character Sets, Paddings, Chunks - und auch mehr über die Unterschiede der Versionen der Apache Commons Codec und Eigenimplementierungen von Mixpanel.

Ein kleines Abendteuer - auf dass ich heute eigentlich keine Lust hatte.

Life 22. Sep. 2013

Apple sammelt biometrische Daten

Super das Apple voller Euphorie verkündet von nun an den Fingerabdruck bei jeder Nutzung von jedem User von den marktbeherrschenden iPhones und Co. digital zu verarbeiten. Wer mir nach GPS Daten Persitierung und Snowden erklären möchte, dass die von Apple präsentierten Sicherheitsmaßnahmen nicht gehackt werden können - dann los. Aber womöglich gab es ja sogar Unterstützung bei der Entwicklung dieses Feature und die Backdoor ist in dedizierten Kreisen bekannt? Auch wenn ich hier spekuliere - nun gehen nach Fotos, Videos, allen Siri Nachrichten, unseren Adressbüchern, unseren Bewegungsdaten, unserem Surf- und Telefonverhalten, unseren App-Nutzungen auch noch direkt biometrische Daten durch den Prozessor. Holla die Waldfee. Und das alles ist ein Usability Bedürfnis der User?

Tech 29. Oct. 2012

An jQuery und Modenizr Fetischisten

Also ehrlich. So toll und reizvoll einige der Nutzungsoptionen sein mögen und so modern sich Feature Detection usw. anhören - man sollte die Gesamtarchitektur der Software - und damit meine ich hier im engeren nur der frontendseitige Softwareschicht - nicht außer acht lassen.

Denn diese Technologien taugen eben auch nur etwas, wenn der Einsatzbereich passt.

Wenn Modenizr versucht Features zu finden, dann per Javascript. Und das ist bekanntlich auf einigen Browsern oder Devices langsam. Zum Teil sind auch die Prozessabfolgen anders. Doch genau die Abwärtskompatibilität soll diese Technologie ja ermöglichen. Die Konsequenz ist ganz einfach: man muss auf den Aspekt der Abwärtskompatibilität eben explizit achten und nicht blind auf Modenizr vertrauen. Und dann kann man z.B. auch mal eine No-Script Variante für alte Devices stehen lassen. Das geht dann eigentlich überall gut. Und auch Lücken im Konzept - nein das stimmt nicht, Lücken in der Kompatibilität - gibt es immer noch. Ein tolles Beispiel ist der Kompatibilitätsmodus des IE. Der reagiert dann manchmal anders als erwartet. Und spannend sind auch VM Umgebungen - die stürzen dann auch gerne mal komplett ab - wegen ein bisschen Javascript für runde Ecken. Stimmt, nicht nur runde Ecken, sondern mehr: dort noch ein Schatten, hier noch ein Verlauf, da noch ein Re-Rendering des Overlays, usw.

read more

Tech 25. Oct. 2012

TYPO3 - Language Overlay auf Feld-Ebene

Wer hätte gedacht, wie lange man da rum probieren kann. Also: Es gibt eine Seite mit einigen individuellen Feldern in den Seiteneigenschaften. Diese sollten in Teasern und auf der Detailseite automatisch per TypoScript ausgegeben werden. Soweit so gut.

Einige der Felder enthalten Namen, welche i.d.R. in mehreren oder sogar allen Sprachen gleich geschrieben werden (bei nicht-lateinischen Schriften gibt es ggf. andere Schreibweisen). Aber da sie häufig identisch sind, sollen die Redakteure nicht für jede Übersetzung der Seite wieder die Namen eingeben müssen. D.h. wenn ein Feld in einer Übersetzung leer ist, soll der Feldinhalt der Originalsprache verwendet werden.

Die language_overlay Mechanismen von TYPO3 lassen das im Standard offensichtlich nicht zu. Man kann zwar ein Overlay erzwingen, aber nie differenziert nach einzelnen Feldern.

Die Lösung sieht dann so aus:

22 = TEXT
22 {
	data = page : tx_myext_fieldname
	stdWrap {
		required = 1
		wrap = 
{LLL:EXT:myext/static/template/locallang.xml:pages.field.tx_myext_fieldname} |
		stripHtml = 1
		htmlSpecialChars.preserveEntities = 1
	override = TEXT
	override {
		data = page : uid
		wrap = {DB:pages:|:tx_myext_fieldname}
		if.isFalse.field = tx_myext_fieldname
		insertData = 1
	insertData = 1

Tech 29. Jun. 2012

TYPO3 - Workaround in den Core Funktionen

Da predigt man allen Entwicklern über Jahre, dass man zwar für eigene CEs wenn möglich die vorhandenen Felder in tt_content nutzen soll - aber natürlich nur dann, wenn sie semantisch sinnvoll sind. D.h. z.B. das Feld media für ein Bühnenbild in einem eigenen CE o.ä.

Nun ist das in TYPO3 scheinbar nicht so streng umgesetzt. Im Mailformular wird die Empfänger-E-Mail Adresse in das Feld subheader geschrieben.


Tja. So ist das wohl manchmal.

Tech 22. Jun. 2012

Chrome - Wachsender Application Folder

Als Nutzer einer SSD Platte mit einer leider etwas eingeschränkten Größe habe ich ab und an das Problem, das mir mein OS einen Hinweis gibt, dass meine PLatte voll sei - oder zumindest fast.

Nun habe ich mal mit dem Disk Sweeper alles durch gescannt und mehrere witzige große Verzeichnisse gefunden (6 GB mehr frei und nicht wichtiges gelöscht).

Spanned ist, dass Chome im Application Folder über 1 GB groß war. Warum? Weil Chrome bei automatischen Software Update - welche ja häufiger vorkommen - jedes Mal die neue Version dazu speichert und die alten nicht überschreibt. Chrome hat zwar nur gute 100 MB, aber nach ein paar Monate sind da dann schnell mal auch ein GB voll.

Lösung: Einmal die aktuelle Version herunter laden und die Datei im Application Folder überschreiben. Fertig. ca. 900 MB mehr Platz.

Post 31. May. 2012

Google - Zahlen bei PI-Akquise verschärft

Über 95% aller relevanten Zugriffe über Suchmaschinen kommen von Google. Die restlichen Prozent(chen) teilen sich die anderen Suchmaschinen. Das ist ja nichts überraschend Neues, aber wenn wieder jemand nach Bing, T-Online oder Yahoo fragt, hilft das vielleicht zur Fokussieung auf das Wesentliche.

Anteil von Google an den Gesamtzugriffen über Suchmaschinen:

bei 1 PI ~ 81%
bei >= 2 PIs ~ 95%
bei >= 4 PIs ~ 97%
bei >= 5 PIs ~ 98%

Die Werte wurden bei einer deutschsprachigen Kampagnensite erhoben. Bei internationalen Seiten oder speziellen Branchen kann die Bedeutung auch anders ausfallen.

Life 31. May. 2012

eMobility eSmart Testfahrt

Nach der Entwicklung einer iPhone App für eine Elektroauto Flotte letztes Jahr (übrigens mit Sencha Touch, hat viel Spaß gemacht) habe ich nun endlich meine erste eMobility Erfahrung (im Sinne des Fahrens eines Elektroautos, Bahn fahre ich ja auch gerade mit Strom) gemacht.

Fahren konnte ich einen eSmart. Sexy ist ein Smart ja so oder so nicht, deswegen waren meine Erfahrungen auch nicht allzu hoch. Erwartungsgemäß war er extrem leise - so war ich am Anfang tatsächlich unsicher ob der Motor schon an ist und als ich dann aus der Parklücke raus rolle war ich noch immer nicht sicher, ob es die gelöste Handbremse oder der leichte Gasdruck waren.

read more

Tech 27. Apr. 2012

TYPO3 - Entitäten und dynamische Formulare mit Seiten, Mailform und TypoScript

Eine sehr häufige Anforderung ist bestimmte Entitäten in TYPO3 abzubilden und darauf aufsetzend dynamisierte Formulare zu erstellen. Klassische Beispiele sind Ansprechpartner mit eigenen E-Mail-Formularen, Veranstaltungen mit einem Anmeldeformular oder Broschüren mit einem Bestellformular.

I.d.R. wird dann schnell auf den Formhandler oder selbst geschriebene Extensions zurück gegriffen. Dabei lässt sich das meistens mit den Standardfunktionen von TYPO3 nutzen.

Hier kurz eine Skizze des Lösungsansatzes - wozu ich später nocheinmal Codebeispiele posten werde.

read more

Tech 25. Apr. 2012

TYPO3: Inhaltelemente mit Trennern und Wrappern - auch für Insert Record

Bei speziellen Designanforderungen ist es ab und zu nötig, einzelne Inhaltelemente mit Wrappern zu versehen oder mit Separatoren - z.B. Trennlinien zwischen allen Elementen, aber natürlich nur dazwischen und nicht etwa über oder unter allen Elementen.

Der Weg dahin führt über einen Marker, den man pauschal auf alle Content Elemente setzt und anschließend über eine Split Funktion mit den gewünschten Tags und Wrappern ersetzt.

Der Umweg ist nötig, da man zwar pauschal einen marker an alle Elemente hängen kann, die Wrapper aber erst beim Rendern des Inhalts für die jeweilige Seite bzw. Spalte gesetzt werden können.

read more

Tech 25. Apr. 2012

PHP - Für Menschen lesbare Zeiträume

Datumsanzeigen sind nicht einfach. Und Zeiträume auch nicht. Zumindest wenn man den Nutzern eine möglichst natürliche Schreibweise anbieten möchte, also nicht im “technischen” Format TT.MM.YYYY. Schöner wären da doch Datums-Zeiträume wie z.B.:

Donnerstag, 26. April 2012
Mittwoch, 11. bis Donnerstag, 26. April 2012
Donnerstag, 26. April bis Mittwoch, 9. Mai 2012
Samstag, 29. Dezember 2012 bis Mittwoch, 2. Januar 2013

Hier eine Beispielfunktion in PHP, welche eine solche Ausgabe erzeugen kann:

read more

Tech 18. Apr. 2012

T-Online Suche: Index ist nicht der Google Index

Seit einer Weile beobachte ich das Phänomen, dass der Suchindex der T-Online Suche nicht dem Index von Google entspricht.

Man könnte jetzt sagen, “wen interessiert T-Online”, aber gut - das ist ein anderes Thema und viele Telekom Kunden nutzen T-Online als Startseite.

Warum die Google Suche auf T-Online einen anderen Index als Google selbst hat, liegt in dem Vertriebskonzept von Google. Diese verkaufen die Suche an andere Plattformen und bei diesem Produkt ist der Index physisch ein anderer. Aber welchen Nutzer interessiert das.

Die große Frage ist also: Wie ist es machbar, eine Seite im T-Online Suchindex zu listen, wenn dies von alleine nicht funktioniert, aber die Seite sogar im Google Index drin ist?

Antworten bitte an mich:

Tech 28. Mar. 2012

Android: Hardware-Software-Verzerrung

Neben Apple, iOS und der dazugehörigen Welt ist bekanntlich Android eine nicht gerade irrelevante Alternative. Und letztlich habe ich mein iPhone am Anfang auch aus dem Grund gekauft (bzw. von form4 bekommen), um die ganze Welt kennen zu lernen. Jedenfalls bin ich so kürzlich zu meinem ersten Android Gerät gekommen.

Und: Ich bin bisher ziemlich ernüchtert. Und während der Nutzung habe ich den Eindruck, dass ein wesentlicher Grund für diese Ernüchterung auch die Hardware ist (ein Odys-Loox - was auch immer das für ein Ding ist).

Die Nutzung macht zumindest keinen Spaß und - wenn ich das versuche zu differenzieren - sind es folgende Probleme: (1) die Touch und gesten Bedienung reagiert miserabel, (2) die Reaktionen sind langsam und (3)Programme stürzen häufig ab.

Wie viel davon nun Android, eine Variation von Android oder die Hardware ist, kann ich kaum sagen. Aber die “User Experience” ist nicht annährend vergleichbar mit einem iPhone oder iPad.

Ein entscheidender Vorteil von Apple (neben einem recht hohen Qualitätsanspruch) war und ist offensichtlich alles aus einer Hand zu liefern. Software und Hardware sind bei Endgeräten heutzutage eben nur noch schwer trennbar und letztlich zählt das Gesamtergebnis.

Tech 9. Mar. 2012

Webtracking: Facebook rocks!

Wieder ein Fall von: Bauchgefühl durch Zahlen bestätigt.

Seit einer Weile poste ich meine (zugegebener Maßen wenigen) Blog-Artikel auf Facebook, Google+ und Twitter. Und im Tracking meines Blogs kann man sehen, wo die Leute so her kommen.

read more

Tech 9. Mar. 2012

TYPO3: PDF Generierung per Webkit

Nachdem ich im letzten Jahr sehr tiefgreifende Erfahrungen mit Print-Stylesheets machen durfte, ist mir schnell klar geworden, dass anspruchsvolle Layouts per CSS nicht Cross-Browser-Kompatibel zu realisieren sind. Die Menge an Detailproblemen und Browserweichen ist weit weg von dem, was man sich im Jahr 2012 vorstellt.

Die Lösung: anspruchsvolle Layout immer als PDF rendern. Denn dann sieht es überall gleich aus, man hat keine Cross-Browser-Probleme, besondere Schriften funktionieren usw.

Wenn man nun aber ein Weblayout nicht nochmal in PHP, FOP oder was auch immer komplett neu setzen möchte, empfiehlt sich das Rendern der PDFs per Webkit Engine. Dann verwendet man eben doch HTML und CSS, muss es aber nur für eine Engine optimieren. Und Webkit ist hier so ziemlich die beste Wahl, was besondere Layout-Features betrifft.

Nun gibt es diesen Ansatz im Kontext von TYPO3 gleich frei Haus als Extension. Super!


Tech 7. Mar. 2012

Webtracking: Mehr Klicks im Inhalt als in der Navigation

Alles nichts Neues, aber wenn man frühere Erkenntnisse nocheinmal mit Fakten untermauern kann, ist das trotzdem gut.

So habe ich in verschiedenen Usability Tests mitbekommen können, welchen Weiterleitungen Nutzer eher folgen und welche Navigationswege sie einschlagen. Dabei sehen sich die meisten Nutzer den Inhaltbereich einer Webseite an und soweit sie dort sinnvolle Links finden, werden diese auch genutzt. Fehlt die Orientierung weichen die Nutzer häufig auf die Volltextsuche aus. Werden sie dort auch nicht fündig, versuchen sie es über die Hauptnavigation.

read more

Tech 2. Mar. 2012

Webtracking: Share Links auf Websites sind Quatsch

Die Anzahl der Klicks auf Share-Links auf einer Website lassen schon zu wünschen übrig.

Hier ein Ausschnitt aus einem echten Tracking:

  • Twitter: 0,27%
  • Facebook: 0,05%
  • E-Mail: 0,05%

(in % der Gesamtbesucher)

Tech 2. Mar. 2012

Google: Gute Akquise von Besuchern mit vielen PIs

Dass Google für fast alle Websites die wichtigste Herkunfts-Quelle zumindest im Segment der Suchmaschinen ist, ist ja klar.

Interessant ist die Kreuzanalyse der Suchmaschinen im Vergleich in Hinblick auf die Page Impressions pro Besuch.

  • Anteil von Google bei >= 2 Pis 87,01%
  • Anteil von Google bei >= 4 Pis 91,81%
  • Anteil von Google bei >= 5 Pis 93,28%

Denn dabei nimmt die Bedeutung von Google sogar noch zu. Die Akquise von Besuchern mit hohen PIs pro Besuch gelingt Google anscheinend auch besser als den anderen.

Tech 1. Mar. 2012

Newsletter: Tragische E-Mail Vorschau ist gängige Praxis

Eins sehr witziges Phänomen fällt mir immer wieder auf, welches man in Zeiten der SEO- und Usability Optimierungen doch wunderlich finden kann.

So ziemlich alle Newsletter die ich bekomme, zeigen im Vorschautext der E-Mail einen Problemhinweis an. “Wenn Sie den Inhalt nicht lesen können …”, “Sollten Sie Probleme haben …”, “Wird der Newsletter nicht dargestellt …” sind der Standard.

read more

Tech 8. Feb. 2012

SharePoint Web Apps made with Sencha Touch

Eine interessante Entwicklung: Sencha scheint sich in breiteren Segmenten aufzustellen und zeigt nun, wie man mit Sencha Touch Web Apps auf Basis von MS SharePoint realisiert. Eine spannende Perspektive für individuelle Business Anwendungen, wenn man auf die Unterstützung mobiler Endgeräte nicht verzichten möchte - und wer will das heutzutage noch?


Tech 11. Jan. 2012

TYPO3: Ist DAM tot?

Ein einer langen Phase, wo DAm quasi Standard jeder TYPO3 Website war, habe ich mich irgendwann schonmal gefragt, wo die tatsächlichen Mehrwerte liegen und insbesondere ob diese die immer wieder auftauchenden Probleme aufwiegen (half-featured GUI, wechselnde Verwendung der mm-Relationen, sich ändernde API bei den DAM-Referenz-Funktionen, fehlender Workspace-Support usw.). Zumindest konnte ich jetzt schon länger drauf verzichten.

Nun kam überraschend vor einer Weile eine Rückmeldung zu einem Workspace-Bug von 2009. Da denkt man erst - wow, da wurde doch noch was getan, aber weit gefehlt:

read more

Tech 8. Dec. 2011

Cufón im Druck: Partiell problematisch

Cufón wird mittlerweile in vielen Webprojekten eingesetzt, da hiermit mehr Optionen für das Design eröffnet werden und nahezu jede Schrift für Titel und Überschriften verwendet werden kann. Bei zu vielen Elemente dauert das Rendering zwar etwas, aber gut - es funktioniert.

Es wäre anzunehmen, dass sich das Rendering beim Druck einer Website identisch verhält. Für Browser wir Chrome und Safari trifft das auch zu. Die Internet Explorer scheinen hier unterschiedlich zu reagieren - denn manchmal stürzen diese ab (freeze). Vermutlich wenn ihnen der Speicher ausgeht. Beim Firefox (auf Windows) ist es am dramatischsten, denn dieser stürzt bei umfangreichen Website mit vielen Cufón Elementen immer ab.

Sehr schade. Letztlich bleibt wohl doch die serverseitige PDF-Generierung die beste und sicherste Variante.

Tech 7. Nov. 2011

.htaccess Sprach-Redirect

In jedem Webprojekt wieder kommt die Frage auf, wie nun konkret ein Redirect per .htaccess anhand der Browsersprache des Users funktioniert. Und dann googlet der eine hier und recherchiert der andere dort und dabei sind es nur ein paar simple Zeilen.

Hier also als Memo:

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/ [L,R=301]
RewriteRule ^$ /en/ [L,R=301]

Die Anweisung wir bei bestehenden Redirect Rules einfach oben drüber geschrieben. So funktioniert sie auch mit den Standards von TYPO3 oder Drupal.

Post 1. Sep. 2011

CMS benutzerfreundlich entwickeln


t3n Magazin Nr. 25, 09/2011 - 11/2011

Content Management Systeme (CMS) wie TYPO3 sollen in erster Linie die redaktionelle Arbeit unterstützen. Es erklärt sich eigentlich von selbst, dass sich das CMS an den Bedürfnissen der Redakteure orientieren sollte. Häufig entspricht dieser Anspruch jedoch nicht der Realität. Dabei bedarf es nicht viel Entwicklungsaufwand, um Redakteuren die Arbeit zu erleichtern.

read more

Tech 2. Jul. 2011

Google Analytics Benchmark

Spannend: Conversion liegen überall bei ca. 1% - also keine Angst vor Enttäuschung beim Kunden. Kleine Zahlen sind normal.

Und: Die CPC Suche bringt intensivere Nutzer - das ist auch mal spannend.

Tech 21. Jun. 2011

Google Apps discontinues support of IE7

Google Apps beendet den Support von alten Browsern. Zu denen zählt Google den Microsoft Internet Explorer 7, Mozilla Firefox 3.5 und Apple Safari 3.

Das ist ein großer Schritt in die richtige Richtung - und man beachte: der Support des IE 7 (!) wird eingestellt.

Tech 17. Jun. 2011

Sencha Touch: Einstieg

Neue Frameworks müssen ersteinmal eine Weile sanft beäugt und betastet werden - und dann mit harten Projektanforderungen so richtig auf die Bewährungsprobe gestellt werden. Hört sich einfach an, macht aber auch lange Abende. Aber es schon sehr cool, wenn die Seiten so hin und her flippen und swipen und scalen und man auf seiner eigenen Arbeit mit fettigen Fingern rumwischen kann. Klasse Framework. Sehr cool.

Tech 18. May. 2011

Webtracking: Logfileanalyse vs. Pixeltracking (2)

Die Hauptursache, warum die Logfile-Analyse so stark von den reellen Nutzungswerten abweicht, ist, dass Seiten und Seitenressourcen an verschiedenen Stellen gecacht werden - allen voraus die Browsercaches, welche bereits geladene Dateien (hoffentlich) nicht nocheinmal vom Server abrufen - dann aber gleich gefolgt von CDN, Proxies und ähnlichen Systemen. Hinzu kommt, dass sich diese Verfälschung in den Logfiledaten erhöht, sobald das Performance-Tuning nach vorne raus intensiviert wird - was glücklicherweise immer häufiger passiert.

Entgegen einiger Autoren und Spezialisten des Webtrackings, sehe ich keine sinnvolle Alternative zum Pixeltracking, um realistische Daten zu erheben.

Tech 16. May. 2011

TYPO3: RealURL und nicht valide Lookup-Ergebnisse (nomatch bei postVarSets mit lookUpTable)

Wenn man per RealURL bestimmte Parameter bzw. Datenbank-IDs kodiert, kann man wunderhübsche URLs erzeugen. I.d.R. macht man das für Datenbank-Records mit “postVarSets” über eine “lookUpTable”.

Standardmäßig werden so aber alle Werte angenommen und als gültig verarbeitet - was in der Realität aber vollkommen falsch ist. Wird eine URL mit einem Alias aufgerufen, welches anhand der lookup-Konfiguration nicht gefunden werden kann, erwarte ich eine Fehlermeldung. Am besten einen 404-Fehler, welcher über das TYPO3 Handling abgearbeitet wird.

Hierfür muss man aber selbst Hand anlegen.

read more

Tech 13. May. 2011

Was den IE6 und Monkey Island verbindet

Jetzt fühle mich wie vor einem Jahr … da habe ich alte Amiga Spiele auf meinem Laptop installiert und Monkey Island 2 gespielt.

Jetzt hab’ ich endlich wieder einen nativen Internet Explorer 6. Man ist das retro. Nur dass man zu solchen Spielereien durch seinen Job genötigt wird ist eigenartig: Meine Monkey Island Zeit hat mir damals niemand bezahlt. Im IE6 spielen nun schon.

Und da rufen immer alle nach Innovationen.

Tech 6. May. 2011

Webtracking: Logfileanalyse vs. Pixeltracking

Zitat auf dem etracker Anwenderhandbuch: “Carsten Pohle von der Humboldt Universität in Berlin hat eine Studie über die Quantität dieser Abweichungen [Abweichung zwischen Logfileanalyse und Pixeltracking] verfasst. Diese kommt zu dem Ergebnis, dass bei der Logfile-Analyse beispielsweise die gemessene Anzahl der Besuche einer Website um mehr als 30 Prozent vom tatsächlichen Wert abweicht.”

Life 6. May. 2011

Facebook und Demokratie

Das ist doch mal toll, dass ein Facebook-Post mit dem Hinweis auf eine Petition beim Bundestag eine so positive Resonanz auslöst.

Wollte man den viralen Effekt berechnen, könnte man sagen: ein Post = 3 Mitzeichner der Petition. Wenn man es auf die Anzahl der Freunde rückrechnet wären drei Mitzeichner auf die ca. 170 potenziellen Leser des Postings (also die Freunde, 170 liegt in etwa im Durchschnitt). Also ein Post der Petition erzeugt bei ca. 1,8 % der “Freunde” nicht nur einen Klick, sondern eine reelle demokratische Aktivität - die Mitzeichnung einer Petition. Eine Quote von der Werber häufig träumen!

Das kann man dann weiter hochrechnen, da aus dem Feedback hervorgeht, dass der Link weiter verteilt wurde. Übrigens habe ich auch nur auf einen Twitter-, Facebook- oder Sonstwas-Link reagiert.

  • Meine Schlüsse: Virale Effekte können reale Effekte sein!
  • Facebook ist ein Kommunikationsmedium, welches solche Effekte möglich macht.

Tech 8. Apr. 2011

PHP: Shorten String

Kürzen eines Strings unter erhalt vollständiger Wörter;

if(strlen($str)>30) $str = substr($str, 0, strpos(wordwrap($str,30,"###END###"), "###END###"));

Tech 23. Mar. 2011

Seitenbereiche aus dem Google Index ausschließen per googleoff: index

Für seiteninterne Suchen tritt das Thema ja häufig auf: Was kommt in den Index und was nicht?

So wird im CMS gewöhnlich nur der Inhaltbereich einer Seite in den Index geschrieben, da Seitenteile wie Navigation, Randspalte und insbesondere Teaser zu anderen Seiten dort nur das Suchergebnis unscharf machen würden. In TYPO3 macht man das simple per Index Search Boundaries. In Drupal stellt sich die Frage nicht, da die Nodes indiziert werden und nicht sie Seiten.

Das gleiche geht offensichtlich auch für Google “googleoff: index” und “googleon: index” Einträge als HTML-Kommentare. Vermutlich alles nichts neues, aber ich hab mich das oft gefragt und nie nach der Antwort gesucht. Und trotzdem habe ich sie jetzt gefunden.


Toll, so Antworten zu Fragen, wonach man gar nicht sucht.

Tech 6. Mar. 2011

TYPO3: Zend Gdata - Google Kalender importieren

In manchen Fällen hat man auch in der PHP und Web-CMS Welt das Gefühl, dass gute Softwareentwicklung möglich ist. Eine super Kombination hierfür sind TYPO3 als ziemlich leitungsstarkes Web-CMS-Framework und den Zend Komponenten, wo Unmengen an Features und Services angeboten werden.

So kann man z.B: über die Zend Gdata Komponenten wunderbar die Google API ansprechen und nutzen. So kann ich mehrere Google Kalender bspw. recht einfach in eine Website bringen. Einfache eine Scheduler Komponente in TYPO3 aufsetzen, die ganze Gdata API da rein - und schwupp, sind alle Daten in der CMS-Datenbank.

Toll ist die Kombination vor allem, wenn man verteilte Kalenderdaten zusammen führen möchte. So können verschiedene Personen die einzelnen Kalender unabhängig voneinander verwalten. Das zusammenführen erfolgt noch per Google. Und aus dem Account mit der Kalender-Agregation werden dann die Daten importiert.

So bleiben einem auf diesem pragmatischen Weg die lästigen Aufgaben der Dateneingabe und der Kalenderformate usw. erspart - das können andere mit Services wie Goole nämlich mittlerweile besser.

Live zu sehen ist das Ganze in Kürze auf einer tollen Website - aber die Spannung wo, die bleibt.

Tech 28. Feb. 2011

Trac und Subversion auf Ubuntu mit Plesk

Microblogging im Blog - darf man das? Egal. Endlich läuft auf meinem Server Subversion und Trac und das ohne Plesk-Konflikte. Super. Vermutlich liegt es an Ubunto und den neuen Distributionen, da ich mit Suse 10 und PLesk 9 beim besten Willen keinen Weg gefunden habe, Trac zum Laufen zu bekommen.

Tech 14. Feb. 2011

Drupal: Facebook Modul-Familie

Kürzlich habe ich die Facebook Modul Familie für Drupal ausprobiert und war erstaunt, dass diese auch für Drupal 7 relativ rund läuft. Facebook Connect ließ sich problemlos und ohne Anpassungen konfigurieren und nutzen - was vermutlich einer der spannensten Punkte ist. Die API-Integration zur Nutzung von Drupal als Facebook-App-Host ist dann der nächste Schritt. So lassen sich wunderbar die Facebook-Rechweite mit dem Content-und-Community-Management über Drupal vereinbaren und einem bleiben rein handgeschriebene PHP-Applikationen erspart. Toll.

Tech 1. Nov. 2010

Thunderbird mit überraschend praktischem Feature

Hui, bei Thunderbird erwartet man zwar einen soliden Mail-Client, aber nicht unbedingt Usability oder gar kleine Feature-Innovationen - bei der neuen Suche ist das ja beides nicht wirklich gelungen und Text kopieren im Adressbuch ist noch immer schwer.

Aber: Thunderbird erinnert an Attachments, welche man ggf. anfügen wollte, aber das noch nicht getan hat.

Tech 13. Oct. 2010

JW Player released

Nun ist es soweit - der berühmte JW Player ist als Duallösung für Flash und HTML5 released:

Life 6. Oct. 2010

Bloggen per iPhone

So - dazu hat man also moderne Handys. Dass man sich darüber freut überall bloggen zu können aber nicht weiß, was man schreiben soll.

Tech 17. Sep. 2010


Die Funktion cropHTML kürzt Texte und behält dabei korrektes HTML bei. Das ist genau die Funktion, welche man für automatisch Teasertexte benötigt. Bisher haben wir hier eine eigene Funktion genutzt. cropHTML kann einfach per StdWrap genutzt werden. Super!

Tech 15. Sep. 2010

JW Player wird ein unified HTML5- und Flash Player


“The next release of JW5 is going to be a big one. JW Player 5.3 introduces a unified model for working with Flash and HTML5. How? We’ve taken our Flash & HTML5 players and rolled them together, giving them a single JavaScript API and skinning model. JW Player 5.3 will deliver on the promise of “embed once, run anywhere.”

Genau das wan man möchte: Ein Versprechen, dass es überall läuft. Somit kann man die ganzen How-Tos und Tutorials aus T3N und Internet vergessen und wie auch vor dem iPhone wieder den JW Player nutzen. Gut, dass es auch Konstanten im Internet gibt.

Tech 9. Sep. 2010

Priority Inbox

Endlich ist sie da. Seit ein paar Tagen erwarte ich schon, dass das Rollout der Priority Inbox von Google Mail bei mir ankommt und nun ist es geschenen. Toll!

Tech 27. Aug. 2010

cufón: Individuelle Schriften auch auf Apple Geräten

Seit längeren verwenden wir cufón für die Nutzung von individuellen Schriften auf Websites. Wir haben zunächst auch sIFR in Erwägung gezogen, eine Lösung per Javascript und Flash - diese scheint aber etwas langsamer im Rendering zu sein und für die Erzeugung der Schriftdateien muss man Flash verwenden. Dagegen spricht ebenfalls, dass Apple fragwürdige Strategie gegen Flash, den Einsatz von sIFR auf iPhones oder iPads verhindert. cufón kann hier Punkten und unterstützt das iOS. Künftig könnte man auch Google Fonts in Erwägung ziehen. Allerdings ist die Auswahl an Schriften sehr mager und kann nicht individuell mit lizenzpflichtigen Schriften genutzt werden. Zudem sieht das Rendering derzeit noch sehr pixelig aus. Also derzeit ein klares Pro cufón.

Tech 21. Aug. 2010

TYPO3: Real URL genau erläutert

Sprechende URLs sind bei weitem kein neues Thema und auch Real URL (oder eine entsprechende Alternative) kommt in jedem Projekt zum Einsatz. Aber gerade wenn es um eine semantische und Suchmaschinen-optimierte URL-Generierung auch für komplexe Parameterkombinationen oder Records geht, muss man sich die Konzepte nocheinmal detaillierter ansehen. Ein sehr gut erläuternder Beitrag von Dmitry Dulepov ist hier zu finden.

Tech 21. Aug. 2010

Drupal/TYPO3: Facebook Connect und Co.

Druapl als klassische User Generated Content Management System hat in der Modulbreite natürlich einiges für den Social Network Bereich zu bieten. So z.B. ein Facebook Connect Modul, auch wenn dieses noch im Dev-Status ist. In Kürze werde ich dieses mal evaluieren und hier berichten. Aber auch für TYPO3 sind Extensions verfügbar - allerdings mit mageren Usage Zahlen. Aber auch hier steht eine Evaluierung an. Ein Facebook Login für eine einfache Kommentarfunktion ist schon eine Klasse Sache. Besser noch wäre natürlich die ganze Palette mit Login an der Website, Facebook Connect, Twitter Login etc. wie es z.B. bei Future of Web Strategy realisiert ist.

Tech 25. Jun. 2010

Chrome - ein schneller und guter Browser

Vermutlich wird Chrome in der Verbreitung noch eine Weile ein Schattendasein führen. Aber nach einigen Wochen intensiver Nutzung ist es ein durchaus guter, schneller und wunderbar nutzbarer Browser. Keine überfüssige Trennung mehr zwischen URL- und Suchfeld, viele viele Extensions inkl. Web Developer Tools, SEO Tools, Scribefire, Twitter- und Facebook Sharing u.v.m.

Post 25. Apr. 2010

Website Performance Optimierung - Fokus Frontendoptimierung


TYPO3 Camp Berlin / Potsdam 2010

Die Performance ist ein wesentlicher Faktor für den Erfolg einer Website. Viele Aspekte der Performance spielen sich im Frontend ab und weniger in der Anwendungsentwicklung oder der Serverinfrastruktur. In einem Vortrag auf dem TYPO3 Camp Berlin/Potsdam 2010 gibt Jan-Henrik Hempel einen Überblick zum Thema “Website Performance Optimierung” mit dem Fokus auf Frontendoptimierung und erläutert die wesentlichen Maßnahmen.

read more

Tech 16. Apr. 2010


Das T3BLOG ist eine recht umfangreiche Blog-Extension. Sie hat einfachere Eingabemodule im Backend, verschiedenste Frontendanzeigen und vor allem: Sie unterstützt Features wie Blogroll, Trackback, Ping usw. Allerdings arbeitet die Extension mit vollkommen eigenen Tabellen und Modulen und somit leider recht weit von den Kernstrukturen von TYPO3 entfernt. Dadurch ist auch die Codemenge sehr umfangreich, wobei viele Strukturen und Funktionen eigentlich schon vorhanden sind. Der Umfang und die Funktionalität sieht auf den ersten Blick aufgeräumter als bei TIMTAB aus, allerdings ist das Kernkonzept ähnlich wie bei tt_news nicht das, was ich mir wünschen würde.

Tech 16. Apr. 2010

TYPO3: Flexible Tagging Extension

Die TYPO3 Extension Tag Pack bietet eine flexible Möglichkeit TYPO3 Inhalte beliebiger Tabellen zu taggen. Gerade die Unabhängigkeit der Tabellen macht sie attraktiv. In der Standardkonfoguration sind zunächst “pages” und “tt_content” aktiviert. Das Tagging erfolgt über die einfache Eingabe in ein AJAX-Feld. Ist das Tag noch nicht vorhanden, wird es einfach angelegt. Sind passende Tags zur Eingabe vorhanden, erscheint eine Live Search unter der Box. Von Drupal und anderen Blog Tools ist man sowas gewöhnt - für TYPO3 ist das eine kleine Revolution und lässt das Tagging vielleicht endlich in die TYPO3-Welt einziehen. Die Tags können über das Listenmodul verwaltet werden - oder über ein sehr eigenartiges Backend-Modul. Die Extension brigt noch eine Tagclound und eine Liste von Einträgen mit. Also im Grunde erstmal das, was man braucht. Toll ist, dass sich durch die Unabhängigkeit von den Tabellen die eigenen Konzepte - wie z.B. semantische Seitentypen als Grundentitäten - einfach durch das Tagging ergänzen lassen.

Tech 16. Apr. 2010

Logitude/Latitude Marker and Tooltip für Google Maps

Google Maps bietet für den User zusätzliche Tools. Eines ist bspw. ein Logitude/Latitude-Marker, ein anderes ein Logitude/Latitude-Tooltip. Besonders geeignet sind solche Tools für Webredakteure, die im Backend von TYPO3 oder Drupal direkt die Geodaten eingeben müssen - welche aber natürlich kein Normalsterblicher kennt oder aus dem Stehgreif heraus findet.

Post 28. Jan. 2010

Workshop - Die Indexed-Search-Alternative Lucene in TYPO3 integrieren


t3n Magazin Nr. 17, 09/2009 - 11/2009

Compared to indexed search, the Lucene-based TYPO3 search described here achieves a significantly higher speed in load tests. The effort for the basic setup of Lucene as a TYPO3 search is quite low. More complex, however, is the implementation of special functions, such as the consideration of user authorizations, the use of “Boost Factors” and extended search functions. However, Lucene offers a lot of potential as a search engine and the implementation tasks do not refer to the development of optimized algorithms for indexing and searching, but to the application logic. This is a significant difference, as no technology risks are to be expected in the development here.

read more

Tech 28. Jan. 2010

ZK mit tollen Modulen

Das ZK Framework hat in unsere Projekten bereits seine Stärken und seine Schwächen zeigen können. Letztere liegen insbesondere in der Performance und der Cross-Browser-Kompatibilität, wobei letztere zumeist auch eher ein Performanceproblem ist. So sind mittelmäßig aufwändige Oberflächen in normalen Browsern wie IE7 oder Firefox 3 nur passabel nutzbar. Im IE6 mag man gar nicht mehr irgendwo klicken. Im Safari 4 oder IE8 hingegen, geht alles relativ flot - vermutlich wegen der dort neu eingebauten JavaScript Engines, welche primär auf Geschwindigkeit hin optimiert wurden.

Sollten die Probleme also die Einsetzbarkeit nicht überwiegen, kann man sich auf viele spezielle Controls freuen. Besonders bemerkenswert finde ich die Spreadsheet Komponente, mit Rendering von Diagrammen, Formeln usw. Entsprechende Komponenten im Open Source Bereich sind nicht allzu weit verbreitet. Ebenfalls sehr schön und umfangreich ist die Kalender Komponente, welche irgendwie durch den Minimalismus und das hellblau an Google erinnert.

Ich bin gespannt, wo wir die Komponenten mal einsetzen werden.

Tech 28. Jan. 2010

Adobes BrowserLab ist nun online

Als Alternative zu Litmus oder vielfältigen Systeminstallationen kann nun auch Adobes BrowserLab genutzt werden. Meine ersten Versuche waren durchaus gut, die Tests laufen recht schnell durch, sodass man nicht lange auf seine Testergebnisse warten muss. Die Browservielfalt ist allerdings recht überschaubar - die wichtigsten Kandidaten wie IE6 und IE8 sowie lätere Firefox Browser sind allerdings verfügbar. Hier geht’s weiter:

Tech 30. Jun. 2009

Neuer Browser: Safari 4

Ein Hoch auf die Browservielfalt: Es gibt eine neue Safari Version 4. Die Highlights: CSS 3 Webschriften, SVG-Unterstützung, Nitro JavaScript-Engine (soll schnell sein), spannende Entwicklerwerkzeuge u.v.m.

Bleibt nur zu hoffen, dass die Safarinutzer sich weiterhin ähnlich wie die Operanutzer verhalten und recht zügig ihre Versionen aktualisieren und die Vielfalt nicht noch steigt. Mein Appell: Seid Vorbilder für die MS Community und nutz eine und nicht drei Browserversionen gleichzeitig. Da man sich darauf aber nicht verlassen kann, werden Tolls wie Xenocode immer wichtiger (Danke an MH).

Tech 25. Jun. 2009

TYPO3: Index-Einstellungen im TypoScript Setup

Kleine Erkenntnis: Die Index-Einstellungen im Setup müssen in config UNTERHALB von page stehen! Und natürlich NICHT in page einer Druckansicht oder einer Feed-Ausgabe. Ansonsten landen diese Ansichten alle im Suchindex.

page {
	config {
		index_enable = 1
		index_externals = 1

Tech 24. Jun. 2009

phpDocumentor für Eclipse

Zur Doku von PHP-Code ist die klassische phpDoc-Dokumentation am eingängigsten. Per phpDocumentor kann aus dieser Dokumentation im Code eine HTML-Doku erstellt werden. Hier gibt es eine einfache Anleitung, wie man das ganze in Eclipse verwendbar macht.

Post 12. Jun. 2009

TYPO3: Lucene vs. Indexed Search - Ein Performancetest

Nun ist die mitunter schlechte Performance der Indexed Search nicht mehr nur ein Verdacht, sondern bewiesene Tatsache. Um für sehr umfangreiche TYPO3-Seiten noch eine gute Performance einer Volltextsuche gewährleiten zu können, mussten wir zum einen Fakten schaffen, um die Probleme einschätzen zu können. Und da die Bedenken auf der Hand liegen, haben wir gleich die PHP Lucene auf Basis der Powersearch Extensions in den Test mit einbezogen.

read more

Tech 11. Jun. 2009

Google Maps Performance - Cubes als mögliche Lösung

Zum letzten Artkel wurden mir als alternative Lösungsmöglichkeit mehrmals die Geo Cubes ( von skilldeal empfohlen. Das besondere an den Cubes ist vor allem das Clustering, d.h. hier werden Massen an Geo-Punkte je nach Zoomstufe zu Clustern zusammengefasst und dem User angezeigt, dass dort weitere Einträge beim näheren Heranzoomen zu sehen sind. Klasse! Ein Beispiel ist direkt auf der o.g. Website zu sehen.

Und noch ein Nachtrag:  Den auch die Google Maps API selbst bietet weitere Optimierungsmöglichkeiten. Dieser kann man sagen, dass z.B. nur Punkte welche im aktuellen Viewport auch sinchtbar sind, gerendert werden. Dies sollte die kritischen Lastgrenzen nocheinmal deutlich entschärfen. Ein entsprechendes Proof of Concept steht noch aus - aber auch an.

Tech 22. May. 2009

Google Maps Performance - ein Test

Entgegen dem Stand vor wenigen Jahren ist Google Maps sehr belastbar und stabil geworden. Um die Möglichkeiten und Grenzen für den Einsatz etwas besser einschätzbar zu machen, habe ich einige Tests gemacht.

Zur Erzeugung von vielen Punkten auf einer Map verwendete ich dazu einen “Random Point Generator” ( Hiermit kann man große Mengen an Punkten erzeugen und in Google Maps darstellen. Allerdings wird hier kein HTML-Code für die Beschreibung des Punktes mitgeliefert. Getestet habe ich auf einem recht schnellen Desktop Rechner mit aktuellen Browsern, auf einem aktuellen mittelmäßig schnellem Notebook und einem alten Rechner mit dem Internet Explorer 6.

read more

Tech 5. May. 2009

TYPO3: Workspaces - Teaserlisten, Bildvorschau und weitere Kinderkrankheiten

Die TYPO3 Workspaces sind für die Trennung von redaktionellen Arbeiten und dem letztlichen Publizieren eine sehr gute Idee - jedoch gibt es im Detail noch eine Reihe von technischen Problemen und scheinbar auch Bugs in TYPO3. Hier einige Punkte und deren Lösungen:


  • Für Teaserlisten - welche wir gewöhnlich mit TYPO3 Menüs erstellen - verwenden wir je nach Anforderung häufig das HMENU mit special = list, worin wir dann eine UID-Listen von Seiten übergeben. Das HMENU löst bei special = list allerdings nicht die Workspace Versionen bzw. das Version Overlay auf. Das führt dazu, dass man solche Teaserlisten im Draft Workspace zwar anlegen kann, aber die Vorschau je nach Versionszustand der Zielseite falsche Teaser anzeigt. Wir haben die Stelle per XCLASS angepasst. (TYPO3 Bugtracker 0010901: HMENU with special = list does not use versionOL)
  • Ebenfalls für solche Teaserlisten aber z.B. auch für andere Zwecke nutzen wir zusätzliche Bild-Attribute in den Seiteneigenschaften (genau wie das Feld wie Media). Leider werden die DAM Referenzen zur Tabelle pages nicht entsprechend ihrer Workspace Versionen aufgelöst und auch hier kommt es folglich zu Problemen. (TYPO3 Bugtracker 0010902: dam references of page attributes do not work with workspaces)
  • Bei der Verwendung von Bildern und Dateien im Draft Workspace kommt es zu dem Phänomen, dass die Seitenvorschau nur bereits Live publizierte Bilder oder Dateien anzeigt. Laut TYPO3 Bugtracker soll das Problem bereits behoben sein, aber bei uns treten die Probleme noch auf. Neuigkeiten folgen! (TYPO3 Bugtracker 0007344: DAM does not preview correct files in workspaces)

Evtl. sind die Workspace nicht häufig bei größeren Websites im Produktivbetrieb - jedenfalls scheint es noch einige “Kinderkrankheiten” zu geben.

Post 2. Mar. 2009

Single-Source-Publishing mit Open Source - Alfresco-Kopplung an TYPO3


t3n Magazin Nr. 15, 03/2009 - 05/2009

When the Berliner Philharmoniker were due to integrate a document solution and relaunch their website, there was a great deal of overlap in the content to be managed. In order to no longer have to maintain these multiple times, the decision was made in favor of an open source single-source publishing solution. The basis is Alfresco as the leading content source, TYPO3 is one of the possible output media.

read more

Tech 11. Feb. 2009

TYPO3: Das "No Temlpate found!" Problem

Offensichtlich gibt es das Problem durchaus häufig, dass beim zweiten Laden einer Seite ein fröhliches “No Temlpate found!” erscheint. Das ganze hat was mit dem Zeichenencoding der Datenbank beim Cachen von Template Records zu tun. Hierzu gibt es verschiedenste Bugreports und Lösungsversuche, von wilden Umkodierungen der Datenbank bis hin zu Patches mit base64 Encoding.

Bei uns (ohne Patch) geholfen hat folgender beitrag:





verwenden (TYPO3 Version 4.2.1 und 4.2.5).

read more

Tech 9. Feb. 2009

TYPO3: Indexed Search Performance unter Verdacht

Die berücktigten Performanceprobleme der Indexed Search sind mittlerweile offiziell unter “Verdacht” - in der Extensiondokumentation der Indexed Search wird dieser Aspket auch unter den “Known Problems” aufgehührt.:

Probleme mit der Suchperformance sind mir in mehreren Projekten unter gekommen. Beeinträchtigend werden diese Probleme scheinbar bei Webseite mit sehr vielen Inhalten und einen entsprechend großen Suchindex. Dies deckt sich auch mit den in der o.g. aufgeführten Punkten. Zudem scheint es so, als ob die Anzahl der maximalen Ergebnisse die Performance beeinflussen (doch die Anzahl kann man eigentlich nicht herunter setzen, wenn viele Inhalte vorliegen). In letzterem Fall stellte sich auch heraus, dass der Wortindex langsamer ist als der Volltextindex (was der Zielsetzung dieser Mechanismen entgegen läuft).

Mögliche Optimierungen der Suchperformance könnten folgende sein:

read more

Tech 16. Jan. 2009

ncftpput -R

Für Dummys interessant - ein gesamtes Verzeichnis per FTP auf einen Server spielen! Von Server zu Server kann das sogar schnell gehen.

ncftpput -u [username] -p [password] -R [host] . *

Tech 2. Jan. 2009

Drupal: Lesbare URLs

Auch Drupal kann wie TYPO3 “lesbare URLs” erzeugen. Eine nicht sehr schöne Variante davon ist hier allerdings Systemstandard und funktioniert out-of-the-box. Zu beachten ist allerdings, dass die RewriteEngine noch aktiviert und konfiguriert werden muss. Der Drupal-Artikel hierzu beschreibt das ganze recht gut. Blöd ist nur, wenn die angeblich mitgelieferte .htaccess-Datei fehlt, wie es in meinem Package der Fall war.

Diese kann aber schnell mit folgendem Inhalt angelegt werden und alles ist gut.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Tech 2. Jan. 2009

Drupal: Google Analytics

So einfach kann’s sein: Das Modul “Google Analytics” kann einfach installiert werden und fertig. Man gibt dann noch schnell den UA-Code ein und damit ist das Tracking aktiviert.

Was mir dabei sehr gefällt: Die Beschreibungen und Anleitungen zu dem Modul sind sehr ausführlich und detailliert (auch auf Deutsch) geschrieben. Eine solch schöne Erläuterung zu einer CMS-Extension wünscht man sich bei TYPO3 öfter.

Ist das hier bei Drupal eine andere Philosophie oder nur bei diesem Modul ein Glückstreffer? Wir werden es erleben.

Tech 12. Dec. 2008

Kritische Aspekte bei eCards und Tip-a-Friend

Funktionen wie eCards und Tip-a-Friend sind rechtlich aus zwei Gesichtspunkten her nicht ganz einwandfrei und bieten immer das Risiko von rechtlichen Auseinandersetzungen. Im Folgenden eine knappe (laienhafte) Zusammenfassung - ohne konkrete Quellenbelegung oder Anspruch auf Korrektheit etc.

read more

Tech 5. Dec. 2008

TYPO3 goes OpenID

Mit der 4.3er Version (voraussichtlich im Februar oder Maerz 2009) gibt es nun eine native Unterstuetzung von OpenID - und das fuer das Backend un das Frontend. Ich bin gespannt!

Und fuer besorgte bzgl. der Ankuendigung, dass HTMLarea keinen Support mehr bietet - In der Version 4.3 ist der Editor in aktualisierter Form noch enthalten.

Tech 5. Dec. 2008


Viel habe ich mir noch nicht angesehen, aber offensichtlich ist OpenEMM eine weitqus professionellere Newsletter Loesung als Direct Mail. Vermutlich sollte man die Software mal testen. Und eine Integration in TYPO3 gibt es auch schon mit der Extension TE Openemm Newsletter (te_openemm_newsletter).

Tech 2. Dec. 2008

Thunderbird: Select Address Book Text 1.0

Thunderbird beweist wieder einmal, dass auch schlechte Software einsetzbar gemacht werden kann. Man kann es bewerten wie man will, dass es ein solches Add-On geben muss - aber ohne das kann man eigentlich nichts mit Thunderbird anfangen. Download now!

Tech 18. Nov. 2008

TYPO3: Media Center mit Podcast

Das Media Center kann ein Inhaltelement - also einen Player mit Playlist - als XML exportieren.

Über den Syntax;playerUid=[tt_content Uid] 

wird die Playlist des angegebenen Inhaltelements als XML ausgegeben. Eine PageUid ist dabei nicht nötig. Der Type 66 ist die Standardkonfiguration und kann per Constant Editor verändert werden. Für einen schöneren Link, kann RealURL entsprechend konfiguriert werden.

Das Media Center bietet drei verschiedene Feed Formate an: XSPF, RSS+Media und RSS+iTunes. Die letzteren beiden Formate sind RSS 2.0 Feeds. Die o.g. URL zur XML Ausgabe muss dann noch in die Headerdaten der Seite eingefügt werden. Das geht wie gewohnt über einen link-Tag in den headerData.

# Podcast XML
page.headerData.1 = TEXT
page.headerData.1.value = <link rel="alternate" type="application/rss+xml" title="RSS 2.0" xhref=";playerUid=[tt_content Uid]"> 

Sinnvoll ist es diesen Eintrag in der Datenbank am Template Record zu vermerken, soweit die Uid zum Inhaltelement hierin enthalten ist. Diese kann natürlich auch über Konstanten ausgelagert werden.

Problematisch bleibt wie bei allen Podcasts die Auswahl der richtigen Audio- und Videoformate. FLV ist das beste Format fürs Web, dies kann aber kaum ein normaler Client Rechner abspielen. MOV, MP2 oder MP4 Dateien kann man per Default über das Media Center gar nicht hochladen - diese wären für die Verwendung in einem Feed aber besser als FLV.

Nebenbei zum Media Center: Ein Blick in den Constant Editor lohnt sich, denn hier können die Darstellungseigenschaften wir Farben, Icons, Autoplay etc. voreingestellt und an das Design der Website  angepasst werden. Ein tolles Feature ist das “Logo”. Hier kann man ein PNG über das Video legen - ganz wie im Fernsehen.

Tech 11. Nov. 2008

TYPO3: Static File Cache Killer

So, natürlich geht ein statisches Caching nur solange, wie auch statische Inhalte vorliegen - wer hätte das gedacht. Ein echter Killer hierfür ist z.B. ein Counter von irgendwelchen Einträgen, der überall auf der Seite sichtbar ist. Dieser muss natürlich immer aktuell sein. Folglich kann aber keine einzige Seite statisch erzeugt werden:

page has INTincScript.

Tech 10. Nov. 2008

TYPO3: Mehr Performance mit Static File Cache und Scriptmerger

Neben dem Ausnutzen der TYPO3 Caching Mechanismen und dem Datenbanktuning sind noch einige Dinge möglich. Das Motto dabei ist “back to the roots” - an den Browser sollen möglichst wenige und kleine Dateien ausgeliefert werden und für die Auslieferung sollen möglichst wenige Systemdienste bemüht werden.

Praktisch heißt das: es werden statische HTML Dateien und möglichst wenige zusätzliche Dateien (CSS, JavaScript) ausgeliefert.

Erledigt werden diese beiden Tätigkeiten von den wunderbaren Extensions Static File Cache (nc_staticfilecache) und CSS/JS Merger (scriptmerger).

Mein Plädoyer: Diese beiden Extensions sollten in jedem Projekt eingesetzt werden.

Tech 10. Nov. 2008

Firefox: Cooliris macht aus der Google Bildsuche eine Slideshow uvm.

Super dieses Firefox Pugin: Bisher fand ich die Google Bildersuche immer recht grausam - zu viele Klickt für zu schlechte Ergebnisse. Doch mit Cooliris wird aus dem Suchergebis eine Slideshow mit den Großformatbildern. So muss man nicht mehr auf jedes Bild klicken, schlechte Webseiten besuchen und dann wieder das Bild klicken bis man sieht, ob es einem gefällt.

Tech 30. Oct. 2008

Zwei Hintergrundgrafiken mit CSS 2

Grundsätzlich kann man aktuell nicht zwei Hintergrundgrafiken gleichzeitig verwenden - CSS 2 gibt das an sich nicht her (in CSS 3 ist das glaube ich schon anders). Aber was wäre die Webentwicklung ohne kleine Work-Arounds.

Man kann eine Grafik wie gewohnt auf den Body-Tag setzen und eine zweite per CSS einfach auf den HTML-Tag. Man muss hier ggf. die Höhe und Breite des HTML-Tags ebenfalls angeben, aber das war es auch schon. So kann z.B. ein gekacheltes Muster als Basis verwendet werden und z.B. ein Bild- oder Fotomotiv an einer bestimmten Stelle per background-position gesetzt werden.

Und man staune: Das funktioniert einwandfrei sogar noch im Internet Explorer 6.

Tech 22. Oct. 2008

TYPO3: Media Center als FLV-Player

Die Media Center Extension (media_center) verwendet den bekannten und bewährten JW-Player und funktioniert einwandfrei ohne zusätzlichen Aufwand. Sehr schön. Schade ist, dass aufgrund einer Playlist-Funktion immer extra Records für die Videos angelegt werden müssen und das nicht direkt beim Einfügen des Plugins möglich ist - aber damit lässt sich leben. Zudem muss man beim Testen aufpassen: Das Plugin funktioniert nicht im Preview-Modus einer Seite (welche auf hidden gestellt ist), da hier die generierte XMLS-Datei für den Flash Player durch den bekannten roten Preview-Vermerk von TYPO3 zerstört wird - hier also nicht wundern.

Tech 21. Oct. 2008

mySQL Query Cache - eine Kurzanleitung für Lesefaule

Pürfen, ob der Query Cache verfügar ist (sollte YES sein):

SHOW VARIABLES LIKE 'have_query_cache';

Anzeige der aktuellen Größe des Query Cache (sollte mind. 40KB sein):

SHOW VARIABLES LIKE 'query_cache_size';

Anzeige des Modus (sollte ON oder 1 sein):

SHOW VARIABLES LIKE 'query_cache_type'

Setzen des Query Cache:

SET GLOBAL query_cache_size = 1000000;

Mehr Infos:

Tech 21. Oct. 2008

GeoDaten auf Webseiten - eigentlich nichts neues

… aber es stellt sich eben doch die Frage, wie man es macht, dass moderne Kartenanwendungen auch nach Web 2.0 aussehen und Spaß machen. Hier einige Beispiele aus dem Internet:

Eine Demoanwendung die eine AJAX Live-Search mit GoogleMaps kombiniert:

Von der gleichen Website eine kleine Anwendung, welche die Geo-Koordinaten zu einem Kartenpunkt heraussucht und dem Nutzer ermöglicht, die Position des Punktes manuell zu verschieben, was häufig nötig ist, wenn die Hausnummern falsch angezeigt werden:

PHP Scripte für eine Umkreissuche auf Basis von OpenGeoDB:

Tech 27. Sep. 2008

SPAM: Bei Yahoo als Spam erkannte E-Mails “säubern”

Die großen Mailprovider - insbesondere die Freemailer - bemühen sich korrekter Weise um recht restriktive Spam Filter. Dabei kommt es allerdings auch vor, dass der ein oder andere “saubere” Server als Spam-Mailer “erkannt” wird. Letztlich ist dies mit einem Kundenserver bei Yahoo! vorgekommen und sowohl vom Server versendete E-Mails (Registrierungsbestätigungen, Notifications etc.) als auch ganz reguläre E-Mails von einem Mailprogramm aus verschickte sind allesamt als Spam/Bulk erkannt worden.

Wenn Verzweiflung naht, kann man folgende Formulare von Yahoo verwenden. Hier kann man Server und Services für eine Überprüfung und Freischaltung anmelden.

Im o.g. Fall gab es scheinbar sogar eine Besserung - allerdings sollte man nicht auf die angekündigte Antwort von Yahoo warten - im Zweifelsfall wird diese nämlich nicht kommen … oder im Junk Ordner landen. ;-)

Tech 27. Sep. 2008

Komplettbackup von Shared Hosting Paketen

Wer kennt das nicht: eine ältere Website liegt bei irgendeinem Hoster, wo man ohne weiteres nur einen FTP-Zugang hat. Um die Daten nun zu sichern oder auf einen anderen Server umzuziehen, möchte man aber vermeiden, alle Dateien ersteinmal herunterzuladen, um sie dann ggf. wieder auf einen anderen Server hochzuladen. Gerade wenn es um große Datenmengen geht kann das extrem zeitaufwändig und vor allem auch fehleranfällig sein.

Ein kleiner Trick ist ein folgender: Auf dem Zielserver einfach ein rekursives wget mit “wget -r” aufrufen und als Ziel den FTP-Zugang mit entsprechenden Verzeichnisangaben eintragen:

wget -r

Das wirkt Wunder!

Tech 27. Sep. 2008

Individuelle Schriften auf Websites per sIFR

Eine interessante Technologie ist das sIFR - hier werden Schriften mit einem generischen Flash Modul auf dem Client angezeigt, auch wenn dort die gewünschte Schriftart nicht vorhanden ist.

Aber kann man hierzu nicht auch einfach serverseitig Grafiken rendern? TYPO3 macht das einfach möglich.

Tech 5. Sep. 2008

Netscape ist tot

“Official End of Support: Given AOL’s current business focus and the success the Mozilla Foundation has had in developing critically-acclaimed products, we feel it’s the right time to end development of Netscape branded software. Read the history page for more details about this decision.” (

Ein wenig wehleidig wird da schon, wenn man die einfachen alten Internetanfänge denkt, wo Netscape das Licht am Horizont war. Aber “Angst” um die Browservielfalt muss man ja nicht haben, wenn nun auch Google anfängt Browser bauen zu wollen. ;)

Tech 27. Jun. 2008

Drupal: Module VIEWS und CCK als Beta verfügbar

Die beiden Module VIEWS (zur einfacheren Erstellung individueller Listen und Ansichten von Inhalten) und CCK (zur Erstellung eigener Content Types) sind seit kurzem beide als Beta-Versionen für Drupal 6.x verfügbar. Dann mal auf einen Test …

Tech 27. Jun. 2008

Animiertes favicon

Man lernt nie aus. Offensichtlich ist es möglich als Favicon auch eine Animation einzusetzen. Zuerst gesehen habe ich das hier

Hier wird nicht nur das klassische favicon.ico angegeben, sondern zudem auch ein gif (animiert mit 16×16 Pixel).

<link rel=“shortcut icon” href=“/favicon.ico” type=“image/x-icon” />
<link rel=“icon” href=“/favicon.gif” type=“image/gif” />

Tech 23. Jun. 2008

TYPO3: Abstract Tree Control

Die Extension Graytree Library (graytree) verspricht abstrakte Methoden bereit zu stellen, welche es ermöglicht in eigenen Extensions Tree Controls einfach einzusetzen. Mal sehn, ob das auch so einfach geht, wie man sich das erhofft …

Tech 11. Jun. 2008

UTF-8 kodiertes mySQL Dump importieren

Manchmal kann man Dumps nur über unterschiedliche Tools dumpen und importieren. Klassisch: Export per phpMyAdmin (weil es keinen Shell-Zugriff gibt) und Import per Command Line auf Linux. Dabei entstehen dann je nach Tool, Website-Encoding, Datenbankencoding und Encoding des lokalen Systems wo das SQL zwischengespeichert wird komische Encoding-Fehler.

Liegt das Dump bspw. als UTF-8 vor, muss beim Import darauf geachtet werden, dass entweder das Default Encoing der importierenden Datenbank auf UTF-8 gestellt ist (zumeist ist das nicht der Fall) oder das Character Set muss beim Import einfach mit angegeben werden.

less typo3db.sql | mysql –default-character-set=utf8

Tech 30. May. 2008

Test von HTML Newslettern

Die korrekte Darstellung von HTML-Newslettern ist grundsätzlich ein Problem - man erstellt ja einmal das HTML und verschickt dieses an unbekannte Clients. Wo man im Web noch Browserweichen einsetzen kann, ist man bei E-Mail auf eine vollständige Kompatibilität angewiesen. Durch die Einführung von Outlook 2007 hat sich das Problem nochmal potenziert und artet bei anspruchsvollen Designs in einen Alptraum aus. Man muss nicht nur HTML anno 1998 schreiben - sondern auch dort noch Einschränkungen in Kauf nehmen.

Wie schlimm das auch ist, muss man sich damit auseinandersetzen. Ein hervorragendes Werzeug ist der Service Litmus. Mit Litmus können Kompatibilitäts-Tests mit Webbrowsern und E-Mail-Clients durchgeführt werden. Beim Mail Test versendet man den zu testenden Newsletter an eine von Litmus erzeugte temporäre Adresse und der Service erzeugt für die zuvor gewählten Clients (derzeit 13 mögliche) Screenshot in verschiedenen Varianten. Wenn man überlegt, dass man ansonsten alle Clients selbst installieren müsste (man bedenke auch die Lizenzkosten für alle Outlook Versionen), dann ist Litmus Gold Wert - und Geld kostet es ja auch.

Tech 19. Apr. 2008

Alfresco: MS Office Integration Add-In (Office 2007)

Das Alfresco Add-In für Office unter MS Office 2007 scheint nicht zu funtionieren. Jedenfalls ließ sich das Add-In maximal bis in die Liste der deaktivierten Add-Ins bekommen - zum Aktivieren gab es leider keinen Weg. Möglicherweise liegt es auch nur an der Testversion. Weiß jemand mehr?

Tech 30. Mar. 2008

PHP: UTF-8 Detection

Ein leidiges Thema - man erhält irgendwoher einen String oder einen Text - z.B. aus Textdateien, CSV-Dateien oder RSS-Feeds - und weiß leider nicht immer sicher, um welches Encoding es sich handelt. Das kann insbesondere ein Problem sein, wenn das einzige was man sicher weiß die tatsache ist, dass verschiedene Encoding vorliegen - z.B. eine Import-Datei in ISO1 und eine andere in UTF-8.

Die Multibyte String Functions können hier weiter helfen. Die Funktion mb_detect_encoding() gibt bspw. das Encoding zurück. Allerding nicht immer korrekt. Es sollte also immer der dritte Parameter “strict” auf “true” gesetzt werden. Das führt zwar z.T. dazu, dass kein Encoding ermittelt wird, aber das ist im Zweifel immer noch besser, als ein falsches Encoding.

Benötigt man nur eine Prüfung auf ein bestimmtes Encoding, kann dies mit der Funktion mb_check_encoding() geprüft werden. Wird das Encoding nicht erkannt, kommt einfach ein “false” zurück. Das ist vor allem hilfreich, wenn man z.B. nur UTF-8 gebrauchen kann und im Zweifel alles andere durch ein uft8_encode() schickt.

Tech 26. Mar. 2008

TYPO3: baseURL serverspezifisch in der localconf.php

Endlich geht es - die baseURL genau dort anzugeben, wo sie hingehört: in der Serverkonfiguration also der localconf.php. Seit der Version 4.1.5 gibt es im Install Tool ein paar mehr Felder, welche man in der localconf Datei setzen kann, z.B. defaultTypoScript_constants. Und so einfach geht es dann.

Im TypoScript Setup eine statische Referenz auf eine Constant einfügen.

page.config.baseURL = {$config.baseURL}

Und die Constant in der localconf.php über das Install Tool eintragen.

config.baseURL =

Tech 22. Jan. 2008

TYPO3: Mailformulare mit vernünftiger Validierung - Accessible Form Validation

Bei jeder Webseite gibt es das gleiche leidige Problem: Entweder man nimmt die Standard-Mailformulare von TYPO3, wobei man nach einer Auffrischung des Markups per TypoScript der Redaktion pflegbare Formulare bereit stellen kann, welche allerding nur mit JavaScript Validierungen durchführen und selbst mit JavaScript die Alert-Box bei der Valisierung nicht unbedingt den gehobenen Ansprüchen entsprechen. Oder man wählt eine Alternative, wie z.B. “MailformPlus“, welches die freiere und tiefer gehende Optimierung von solchen Funktionen ermöglicht, jedoch nicht durch die Redaktion editierbar ist.

Aber man recherchiert ja auch zu wenig - und zerbricht sich den Kopf über längst gelöste Aspekt. Mit der Extension “Accessible Form Validation” werden die gewöhnlichen Mailformulare optimiert und stellen eine (BITV) optimierte Anzeige der Formularvalidierung ohne JavaScript zur Verfügung. Die Fehler werden alle gesammelt oberhalb des Formulars in einer sauberen Listen ausgegeben und können natürlich per CSS speziell hervorgehoben werden.

Die Extension läuft direkt nach der Installation und es sind keine zwingenden Konfigurationen nötig. Was zu beachten ist: Es werden wohl Core-Funktionen - vermutlich für das FE Rendering der cObjects - überschrieben, was natürlich bei Updates und eigenen Patches zu berücksichtigen ist.

Tech 22. Jan. 2008

TYPO3: Include von TYPO3 Libs und eigenen Extension-Funktionen in standalone PHP Skripten

In einigen Fällen braucht man eigenständigt PHP Skripte, welche nicht durch das TYPO3 Seiten Rendering laufen, z.B. beim Crawler der Indexed Search oder Direct Mail und auch dem Captcha Tool. Z.T. ist die auch nötig, um Dateien zu streamen oder Webservices anzubinden. Dabei müssen aber auch die eigenständigen PHP Skripte auf TYPO3 Libs und Extension Funktionen (z.B: Model APIs) zurückgreifen können. Die genannten Beispiele tuen so etwas und man kann sich daran orientieren. Allerdings ist die Implementierung der Includes im Detail etwas unterschiedlich und verursacht bei unterschiedlichen Serverkonfigurationen z.T. Probleme. Hier ein Code-Beispiel, welches dieses Problem adressiert und versucht zu beheben.

error_reporting (E_ALL ^ E_NOTICE);


define(’TYPO3_MODE’, ‘FE’);
define(’PATH_root’, $_SERVER[’DOCUMENT_ROOT’]);

if ($_SERVER[’PHP_SELF’]) {
	if (!defined(’PATH_thisScript’)) define(’PATH_thisScript’,$_SERVER[’PHP_SELF’]);
} else {
	if (!defined(’PATH_thisScript’)) define(’PATH_thisScript’,str_replace(’//’,'/’, str_replace(’\',’/', $_ENV[’_'])).’/');

// ATTENTION: check in which level the current script is
define(’PATH_site’, str_replace(’//’,'/’,

define(’PATH_this’, PATH_root.dirname(PATH_thisScript).’/');
define(’PATH_typo3conf’, PATH_site.’typo3conf/’);
define(’PATH_t3lib’, PATH_site.’t3lib/’);

if (!defined(’PATH_tslib’)) {
	if (@is_dir(PATH_site.’typo3/sysext/cms/tslib/’)) {
		define(’PATH_tslib’, PATH_site.’typo3/sysext/cms/tslib/’);
	} elseif (@is_dir(PATH_site.’tslib/’)) {
		define(’PATH_tslib’, PATH_site.’tslib/’);


Tech 1. Dec. 2007

Tagging Dimensionen

Web 2.0-typisch kann man beliebige Inhalte auf einer Webseite (ob durch die Redaktion oder die Besucher) taggen. Der freieste und zunächst naheliegenste Weg ist dabei eine Verschlagwortung anhand einer Liste beliebiger Begriffe oder Wortfetzen.

Möchte man ein Tagging, allerdings für eine optimierte Strukturierung der Inhalte verwenden und ebenso eine darauf basierende komfortable Benutzerführung realisieren, reicht das nicht immer. Zumeist werden dann je nach Art der Webseite, der vorhandenen Inhalte oder der Zielgruppen irgendwelche Maßnahmen eingeführt: mal eine Kategorisierung von Tags, eine Verwandtschaft von Tags, eine Typisierung von Seiten oder eine zusätzliches Tagging nach Zielgruppen - entweder separat oder auch als kategorisiertes Tag. Kurzum: Ein konzeptioneller Wildwuchs.

read more

Life 14. Nov. 2007

Finalizer als Job-Bezeichnung

Wer macht eigentlich die Website fertig? Also nicht nur die Entwicklung des Softwarecodes oder die Konfiguration von RealURl oder das grundsätzliche Layout - sondern eben richtig fertig. Typischerweise gibt bei frontendlastigen Projekten eine Menge an Kleinigkeiten zu beachten, welche bei der Umsetzung einzelner Anforderungen nicht direkt auffallen oder nicht im Fokus stehen. Aspekte wie “Zurück-Links” bei Suchmasken, Detailanzeigen oder komplexeren Use Cases, Locallang-Einträge der Benutzerregistrierung , Community-Funktionen, RealURL-Konfiguration für parametrisierte Plugins, Caching-Optimierung usw. usf. gibt es zu Tausenden und einige von diesen sind nach Abschluss der Entwicklung von allen Funktionalitäten noch offen.

read more

Tech 26. Sep. 2007

TYPO3: Sprach-Domains (config.baseURL)

Häufig werden für verschiedene Sprachversionen einer Webseite verschiedene Domains verwendet - z.B.

  • .com für Englisch und
  • .de für Deutsch.

Hierfür sind mehrere Aspekte relevant:

  • die automatische Auswahl der richtigen Sprache oder Ziel-URL anhand der eingehenden Domain,
  • die Behandlung von Sprachparametern zum Beibehalten der Sprache und
  • die Verwendung der richtigen URL entsprechend der aktuellen Sprache.

Für den ersten Punkt gibt es verschiedene Ansätze, welche genügend diskutiert sind. Persönlich präferiere ich die Nutzung von .htaccess zur Auswertung der Browser/Client-Spracheinstellungen mit einer Weiterleitung auf entweder die entsprechende Domain oder z.B. einen Pfad /

RealURL kann dann hierüber direkt die Sprache als Pfadsegment kodieren bzw. anders herum der L-Parameter direkt im TypoScript verwendet werden. Hat man nun verschiedene Domains, kann man auch das RealURL beibringen.

Allerdings müssen auch die seiteninternen Links, welche auf dem Attribut config.baseURL basieren, korrekt gesetzt werden, um die sprachspezifische Domain auch beim Surfen beizubehalten. D.h. man verwendet für das Setzen der baseURL eine Condition im TypoScript und stellt damit sicher, dass eine Domain richtig für Links verwendet wird.

[PIDinRootline = 2]
	config.baseURL =

Das geht natürlich auch wunderbar mit Subdomains, um z.B. bestimmte Subdomains, welche direkt in Seitenbereiche verlinken, offen zu profilieren. Beim Surfen wechselt dann die die Domain je nach Seitenbaumanschnitt. Weitere Möglichkeiten in dieser Richtung ergeben sich auch aus dem Setzen von Domain-Records an Unterseiten oder ggf. sogar Template-Records um das Seitenroot umzudefinieren. Aber hierzu später mehr.

Tech 13. Sep. 2007

Tipp: FindBugs

Gestern wurde mir das Tool FindBugs empfohlen und nun werden wir es in den nächsten Java Projekten mal testen. Es verspricht anhand sogenannter Bug Patters Fehler in Java Quellcode zu finden, z.B. geöffnete aber nicht geschlossene File Pointer oder abgefangene aber nicht behandelte Exceptions. Für die einfache Nutzung gibt es ein Eclipse Plugin, welches alle gefundenen Hinweise und Fehler in den Warnings mit anzeigt.

Tech 12. Sep. 2007

Favicon online erzeugen

Manchmal hab ich mich schon gefragt, wie man nun am besten ein Favicon für eine Website erstellt und ob man dafür nun irgendwelche Photoshop Plugins oder sonstige Programme benötigt. Nein, viel einfacher.

Auf der Website kann man einfach ein Bild hochladen und erhält anschließend ein hübches Favicon. Wer skeptisch ist, kann sich das Icon auch direkt über die Seite testweise anzeigen lassen. Super! In TYPO3 gibt man dann einfach noch das Attribut

page.shortcutIcon = fileadmin/images/favicon.ico

an und fertig ist das Icon auf der Website.

Tech 10. Sep. 2007

TYPO3: Locale Konfiguration (config.locale_all)

Häufig besteht das Problem, dass lokalisierte Ausgaben auf dem Entwicklungssystem anders erscheinen als auf dem Live-System. Aus vielen Foreneinträgen bekannt ist das Problem insbesondere im Zusammenhang mit tt_news, weil diese Wochentage und Monatsnamen per PHP in das Frontend rausschreibt.

In PHP wird dafür die Funktion “setlocale” verwendet, welche die TYPO3 Konstante “config.locale_all” übergeben bekommt. Hier ist es wichtig den Hintergrund zu wissen. Die Konstante wird einfach an die PHP Funktion weitergegeben und diese gibt anhand des Strings eine Locale Einstellung zurück bzw. setzt diese global. Die Locales kommen dabei aber nicht aus PHP selbst, sondern direkt vom Betriebssystem. Ist dort keine Locale Einstellung mit dem gleichen Namen (Identifier String) vorhanden, wird von PHP eine andere verwendet. Gewöhnlich wird das dann eine englische sein.

Somit muss die Konstante “config.locale_all” einen Wert enthalten, welche auf dem Betriebssystem als Locale verfügbar ist. Man kann sich alle verfügbaren Locale Einstellungen über das Linux Kommando “locale” anzeigen lassen. Fazit: Die Einstellung “config.locale_all” ist Betriebssystemabhängig und kann sich dehalb auch bei gleiche TYPO3 und PHP Konfiguration auf verschiedenen Systeme unterscheiden.

Tech 25. May. 2007

Trac & Subversion

Schon mehrmals haben wir über eine elegante Lösung zum Schließen der Lücke zwischen CVS und unserem Tickektsystem nachgedacht. Die Idee ist einfach: auf irgendeinem Weg muss das CVS Commit mit einem Ticket verknüpft werden können.

Grundsätzlich gibt es zwei Möglichkeiten, wenn man eine dritte Datenquelle vermeiden möchte: (1) das Speichern der jeweiligen Ticketnummer im CVS Commit oder ein Vermerk der Ressourcen und Ihrer Versionen von CVS im Ticket.

Da man als Entwickler zunächst in einer IDE wie z.B. Eclipse arbeitet, wäre eine Integration der Ticketinformationen in die Version-Kommentare vorzuziehen. Zudem hat dieser Weg den Vorteil, dass die Veränderungen am Code auch wirklich als Versionskommentare gepflegt werden, wo diese auch hingehören.

Nun bin ich erneut über Trac gestoßen, und zwar, weil es eine Subversion Schnittstelle anbietet. Eine Schnittstelle kann dabei ja vieles sein. Zunächst handelt es sich nur um die Module TracRevisionLog und TracChangeset, mit welchen das Repository eingesehen werden kann, aber auch Versionsvergleiche und Diffs möglich sind.

Interessant wird das ganze allerdings erst bei der Verknüpfung. Hierfür gibt es zum einen die “manuelle” Method über TracLinks. Damit können über einen speziellen Syntax Verknüpfungen zwischen verschiedenen Trac Ressourcen hergestellt werden, also auch zwischen Tickets und Subversionänderungen.

Der andere Weg ist dabei der spannendere. Über ein “Subversion post-commit hook script” können Posts in das Trac System erfolgen, wobei dieses Script von Subversion als post-commit aufgerufen werden kann.

Das hört sich nach einer sehr spannenden Variante an. Leider endet dieser Beitrag genau da, wo es interessant wird, aber in Bezug auf die Post-Commit-Kommandos fehlt mir bisher noch einiges Detailwissen über Subversion.

Tech 15. Apr. 2007

TYPO3: Perfomance der Indexed Search

In einem Projekt hatten wir deutlcihe Performance Probleme mit der indexed Search. Dies hatte zum einen die Ursache, dass wir die Suchergebnisse der Indexed Search selbst (nach Zeiträumen oder Art des Inhalts) nachgefiltert haben und deswegen die maximale Anzahl der Suchergebnisse sehr hoch eingestellt werden musste.

Zur Optimierung haben folgende Hinweise geholfen:

“We had performance issues as well. After investigating the source we change the default search type from 1 to 20. After this every search was fast and mysql did not produce high server load.”

Spannend dabei ist, dass über den Search Type 1, die Wortindizierung verwendet wird, welche bei dem Typ 20 übergangen wird. An sich sollte man denken, dass die Indizierung von Wörtern mit der Intention entwickelt wurde, durch die zusätzliche Indizierung einen Performancezuwachs zu erzielen.

Ursache für den gegenteiligen Effekt scheinen die wesentlich komplexeren SQL-Statements zu sein. Es müssen zusätzlich zum normalen Index eben auch die Worttabellen in die Suche integriert werden. Bei vielen Seiten und Inhalten scheint diese erhöhte Komplexität wesentlich mehr Zeit in Anspruch zu nehmen. In unserem Projekt handelte es sich dabei um Suchanfragen, die 10 bis 15 Sekunden dauerten, dabei wurden mindestens 80% nur für die Datenbankabfragen benötigt.

Tech 15. Apr. 2007

TYPO3: Bugfix beim Einsatz von Shortcuts und “typolinkCheckRootline”

Bei der Verwendung von mehreren Domains (über verschiedene Domain Records), welche auf verschiedene Ebenen in einem Seitenbaum zeigen, besteht die Problematik, dass Links aus einem Seitenbereich mit Domain A in einen anderen Seitenbereich mit Domain B jeweils die richtige Domain verwenden sollen.

Hierfür sieht TYPO3 die Einstellung “typolinkCheckRootline” vor. Hierüber werden bei der Erstellung von Links über die Typolink Funktion auch die Domain Records berücksichtigt, so dass immer die richtige Domain verwendet wird.

Ein Problem (vermutlich ein Bug) besteht beim Einsatz von Shortcuts auf einer Seite unter Domain A zu einer Seite unterhalb von Domain B. Beim Erzeugen des Links eines Shortcuts wird aus irgendeinem Grund nicht die gewöhliche Typolink Funktion verwendet, sondern die darunter liegende Funktion “t3lib_tstemplate.php->linkData”. Diese Funktion berücksichtigt allerdings nicht die Konfoguration “typolinkCheckRootline” oder die Domain Records.

read more

Tech 15. Apr. 2007

PGP mit Mac Mail

Immer mal wieder beschäftige ich mich mit den Themen “Digitale Signaturen” und “Verschlüsselung von Daten”. Dabei landet man natürlich immer wieder bei PGP bzw. OpenPGP. Und schon mehrmals hatte ich den Eindruck, dass es nicht erwünscht ist Verschlüsselungstechnologien einzusetzen. Das macht sich z.B. daran bemerkbar, dass zwar PGP Funktionen in E-Mail Clients verwendet werden können, aber zum einen nicht in allen und zum anderen immer nur über komplizierte Umwege und zusätzliche Software.

Diesmal war ich allerdings fündig. Ich habe beim Stöbern einen alten Blog Eintrag “PGP for Mac Mail” gefunden, welche einfach erklärt, wie man PGP in sein gelibtes Mailprogramm von Apple integrieren kann.

Wunderbar! Jetzt sehe ich, wer eine Signatur verwendet, kann selbst eine in meinen E-Mails verwenden und meine E-Mails bei Bedarf auch verschlüsseln. Und das alles sehr einfach und intuitiv über Mac Mail.

read more

Tech 7. Mar. 2007

TYPO3: Frontend Dateiupload mit DAM

Beim Einsatz von DAM für die Dateiverwaltung und gleichzeitiger Nutzung von Funktionen zur Interaktion mit den Website-Benutzern gelangt man schnell zu der Frage: Wie bekomme ich nun Bilder oder Dateien die ein Frontend-User hochlädt in das DAM rein.

Der Ansatz ist einfach. Man bastelt sich eine API Funktion, welche Uploads in einem PI entgegennehmen kann und beim Speichern ein paar Funktionen aus dem DAM Framework aufruft, mit denen die Benennung, die Indizierung und das Anlegen der richtigen Meta-Daten erfolgen kann.

Leider stößt man dabei immer wieder auf eine Hürde: Die DAM Funktionalitäten sind für das TYPO3 Backend ausgelegt. An vielen Stellen findet man Funktionen, mit denen man die Abhängigkeit von dem Backend-Kontext umgehen kann, doch immer un immer wieder kommt man wieder am Anfang an. Es muss ein Backend-Kontext bestehen.

Der einzige Weg scheint also die Emulation eines Backend-User innerhalb der Frontend-Plugins zu sein. Hierfür (auch in Zusammenhang mit der DAM Problematik) haben wir eine gute Anleitung mit Beispielfunktionen gefunden.

Wir haben diese Funktionen jetzt in einem Projekt eingesetzt und sie funktionieren wunderbar. Allerdings fehlt noch ein Include der Datei class.t3lib_tsfebeuserauth.php. Ebenfalls sind noch ein paar Zeilen Code für den Upload selbst nötig.

Tech 22. Feb. 2007

TYPO3: Schwerer Bug in Direct Mail

Direct Mail (direct_mail) funktioniert beim Newsletterversand bekanntlich etwas speziell. So ist es üblich einen Newsletter zu erstellen und einzelne Inhaltelemente verschiedenen Newsletterkategorien (dmail_category) zuzuordnen. Durch dieses Prinzip ist es möglich, beispielsweise einen monatlichen Newsletter an alle Abonnenten zu versenden und trotzdem die Inhalte auf die jeweiligen Empfänger zuzuschneiden. So weit so gut.

Nutzt man nun diese Herangehensweise für den Newsletterversand und erstellt trotzdem sehr spezifische Newsletter für nur eine oder einige wenige Abonnenten, kann es vorkommen, dass einige Personen diesen Newsletter gar nicht erhalten. Und das ist auch richtig so, weil diese ja sonst eine leere E-Mail erhalten würden.

Problematisch ist jedoch der Algorithmus zum Versand in dem Modul mod/class.dmailer.php. Hier wird immer eine bestimmte Anzahl an E-Mails auf einmal verarbeitet (in den Standardeinstellungen 50), bevor der Versand fortgesetzt wird. Als Offset für diese 50 E-Mails wird die letzte E-Mail aus dem Maillog verwendet. D. h. der Versand wird immer beim ersten Empfänger nach der zuletzt versandten E-Mail wieder begonnen.

Bei der Iteration durch die 50 Empfänger werden jedoch alle Einträge hochgezählt. Sind nun alle Newsletter der 50 Empfänger ab dem gegebenen Offset leer, stoppt der Versand und beginnt wieder an der gleichen Stelle. D. h. er wird nie fortgeführt.

read more

Tech 22. Feb. 2007

TYPO3: Daten ändern über sr_feuser_register

Man muss sich ja doch immer ein wenig mehr Zeit für die Benutzerregistrierung über sr_feuser_register einplanen. Mal abgesehen davon, dass durch die fülle an Funktionalitäten die Konfiguration recht zeitintensiv ist, stößt man auch immer wieder auf kleinere Fehler oder Ungenauigkeiten.

In der aktuellen Version ist beispielsweise das HTML-Template nicht ganz korrekt. Die Folge ist, dass eingeloggte Benutzer beim Bearbeiten Ihrer Daten ein leeres Formular erhalten.

Ursache hierfür ist eine falsche Angabe des id-Attributs. Hier steht id=”tx-srfeuserregister-pi1-###FORM_NAME###”. Wichtig ist, dass hier der exakte String steht, damit die PI-Vars von der Extension ausgelesen werden können. Die Extension ersetzt den Marker allerdings schon durch den voll qualifizierten Identifier. Folglich wird ein zu langer String ausgegeben und die Extension versteht sich selbst nicht mehr.

Die Lösung hierfür stammt aus einer Mailingliste.

Tech 1. Feb. 2007

TYPO3: DAM Bearbeitungsrechte für Redakteure

Eigentlich ist das ein typischer Wiki-Eintrag, aber unser JBoss Wiki braucht noch eine Weile, bis es von der Entwicklungsinstallation in den Produktivbetrieb geht.

Bei mehreren TYPO3 Projekten tauchte beim Einrichten der Redaktionszugänge das Problem auf, dass ein Admin Dateien bearbeiten und löschen kann, ein Redakteur jedoch nicht. Warum?

“Die Lösung für das Problem […] ist mal wieder denkbar einfach. Der vom DAM angelegte Media-Ordner muss bei den Nutzern oder Gruppen als DB-Mount eingetragen sein. Dann geht auch das Bearbeiten und Löschen von Dateien […].”

Vielen Dank an setsuko für den Post auf dem TYPO3forum.

Tech 1. Feb. 2007

IE7: Endlich PNG Grafiken und Transparenzen

In einem der vielen Ordner mit HTML- und CSS-Spielereien lagen noch dynamische 3D Button rum, die ich gerade wiederentdeckt habe. Dabei arbeite ich mit verschiedenen PND Grafiken, um die Button-Grafiken mit Schatten über einen beliebigen Hintergrund zu legen und zudem ein Icon ebenfalls mit Schatten auf dem Button selbst zu plazieren. Wunderschön.

Das Problem machte hier immer der IE6, der nur mit grausamen JavaScript Hacks dazu zu bewegen war, die Transparenz der PNGs auch anzuzeigen. Der IE7 kann das nun, und man könnte meinen, dass diese tollen Buttons evtl. einsetzbar werden könnten.

Nur leider bauen diese noch auf einer HTML-Tabelle auf und die sind ja bekanntlich nicht dafür gedacht. Eine Alternative wären :before und :after Angaben, aber nein - die kann wiedermal der IE7 nicht!

Life 19. Jan. 2007

E-Mail Konto ohne Spam

Die Junk Mail Problematik ist ja bei den meisten doch noch sehr präsent. Das ist auch gar kein Wunder. In einem Zeitungsartikel Ende Dezember schrieben sie, dass ca. 93% des gesamten E-Mail Verkehrs die unerwünschten Spam Mails gewesen seien. Die Zahl mag evtl. doch etwas hochgegriffen sein, aber auf jeden Fall ist der Anteil beträchtlich.

Nach meinen Versuchen GMail als Spamfilter zu nutzen (was an sich auch gut funktioniert) bin ich nun doch auf den komerziellen Anbierter Fastmail umgestiegen. So kann ich endlich alle Vorteile eines IMAP Accounts nutzen und habe einen synchronen Datenbestand lokal und im Web. Und gleichzeitig habe ich einen hochqualitativen Spam- und Virenscanner im Hintergrund. Die Größe des Online-Storages variiert je nach Paketgröße und kann somit entsprechend der eigenen Bedürfnisse skaliert werden.

Fastmail selbst bietet dazu auch eine Webmail Oberfläche an. Diese sieht zwar etwas altmodisch aus, lässt sich aber trotzdem gut bedienen. Leider gibt es immernoch das alte Problem, dass keine Synchronisierung des Adressbuchs möglich ist. Der einmalige Import aus den verschiedensten Formaten ist aber problemlos möglich.

Jetzt bekomme ich nur noch im Büro lästige Spam Mails.

Tech 14. Dec. 2006

Neue Pando Version: Integration in Skype, Outlook und GMail

Des öfteren höre ich von Kunden, Freunden und Bekannten immer wieder die gleiche Anforderung: Wie kann ich schnell, einfach und günstig große Datenmengen von A nach B transferieren?

Der erste Ansatz ist immer eine Webplattform ggf. mit FTP-Zugängen zumindest für das Backend - wer kennt nicht die Probleme mit einfachen HTTP-Uploads. Zur Vereinfacherung könnte man hier abgespeckte FTP-Programme als Drolets, JavaApplets zum Upload übers Web oder auch ActiveX Controls anbieten. Doch auch bei all diesen Ansätzen besteht weiterhin das Problem, dass die Daten in einem Stück kopiert werden müssen.

Eine elegante Antwort auf all diese Fragen bietet Pando. Pando ist ein kleines einfach zu installierendes Programm (DAU-User Test wurde bereits bestanden, Dank an J.), welches die Vorteile von Peer-to-Peer mit einem konvetionellen Upload kombiniert und das Messaging über E-Mail abhandelt. Die wesentlichen Vorteile sind:

  • der Upload kann jederzeit unterbrochen werden (gewollt oder ungewollt)
  • der Transfer ist in der schnellst möglichen Weise über P2P möglich
  • der Download ist ebenfalls mit Unterbrechungen und unabhängig vom Uploader möglich

Mit der kürzlich erschienen Version wird nun der Web 2.0 Trend eingeführt: Integration in Skype sowie ein PlugIn für Outlook und GMail ermöglichen nun die reibungslose Integration in die gängigen Ãœbertragungsmethoden. Alle Dateien, die eine definierte Größe überschreiten, werden automatisch über Pando geleitet.

Da bleiben keine Wünsche mehr offen - außer vielleicht eine integrierte Verschlüsselung und eine kostenpflichtige Variante ohne Werbung. Aber nun gut.

Tech 14. Dec. 2006

IE7: Alte Internet Explorer Versionen als Standalone

Als Entwickler benötigt man z.T. trotz des neuen und ggf. besseren IE7 den IE6 (oder älter) - z.B. für Kompatibilitätstests und zum Test von internen oder lokalen Anwendungen, wo noch keine Systemupdates vorgenommen werden (sollen). Hierfür gibt es direkt bei Microsoft die dafür gedachten Standalone Versionen verschiedener Internet Explorer Versionen zum Download.

Nur leider ist zumindest die des IE6 nicht (!) zu installieren, wenn man bereits den IE7 installiert hat. Heißt das Standalone? Und in Zukunft wird es nicht besser: laut heise online (Juni 2003) war der IE6 die letzte “Standalone” Version. In Zukunft soll es das nicht mehr geben.

Doch zum Glück gibt es findige Entwickler, die sich diesem Problem bereits angenommen haben. TredoSoft bietet einen Installer für alle IE Versionen (IE3, IE5, IE5.5, IE6) zum kostenfreien Download an. Anschließend hat man in seinem Startmenü alle IE Versionen verfügbar. Das ganze funktioniert einwandfrei. Eine Nebenwirkung ist laut TredoSoft selbst der gelegentliche Absturz des Standalone Browsers - aber ich denke damit läßt sich leben.

Tech 9. Dec. 2006

TYPO3: Plaintext Newsletter mit DirectMail und TemplaVoilÃ

Eine ganz einfache Anforderung: innerhalb einer TYPO3 Webseite, die mit TemplaVoilá  erstellt wurde, soll auch ein Newsletter verwendet werden. Typischerweise mit DirectMail und natürlich auch mit eine Plaintext Variante.

Im Prinzip geht man davon aus, dass die gewönliche Verwendung des Static Templates “alt_plaintext” ausreichen müsste. Tut es auch, solange man keine FCEs (Flexible Content Elements) verwenden möchte. Ist dies aber der Fall - was bei einer TemplaVoilá-Seite nicht weit hergeholt ist - gibt es häßliche Debugausgaben.

Nach einiger Recherche bin ich auf folgenden Kommentar gestoßen:

“[..] Please note that FCEs can`t be rendered with a plain text newsletter […]”

Zum Glück wird im selben Artikel eine Alternative aufgezeigt. Es kann alternativ zu “alt_plaintext” eine Extension namens “svo_tvplaintext” verwendet werden. Diese Extension umgeht jegliches Rendering, sodass eine Abhängigkeit von den Rendermodalitäten der Inhaltelemente ausbleibt. Anstattdessen verwendet sie eine html2text Funktion und erzeugt einfach Plaintext anhand des ausgegebenen HTML-Quellcodes.

Nach einigen Modifikationen an den Regeln für die Tag-Replacements ist diese Extension wunderbar einsetzbar und nicht weniger gut als die herkömmliche. Sie hat sogar einen Vorzug: sie verzieht in der Seite vorhandene Links mit einem index und fährt die jeweiligen URLs am Ende der Nachricht in einer Liste auf. Super!

Tech 8. Dec. 2006

TYPO3: HTML Ausgabe von IMG-Tags optimieren

Wenn man als Typo Object ein Bild ausgibt, sei es als normales Inhaltelement (z.B. Bilb mit Text) oder innerhalb einer Extension (genauer gesagt in einem PI) werden zumeist veraltete Attribute ausgegeben. Mit der folgenden Angabe im Setup läßt sich zumindest das Border-Attribut unterdrücken:

config {
	disableImgBorderAttr = 1

Ein weiterer Aspekt ist die Handhabung des Title-Attributs. Bei einem Blick in den Quellcode kann man sehen, dass es verschiedenen Varianten gibt. Über den zusätzlichen Parameter “emptyTitleHandling” des imgConf-Arrays lässt sich bestimmen, was passieren soll, wenn ein Title leer ist:

keepEmpty: Einfach leer lassen
useAlt: Den Inhalt des Alt-Attributes nehmen
removeAttr: Das Attribut komplett entfernen

$imgConf[”emptyTitleHandling”] = $image[’keepEmpty’];

Ein Blick in den Quellcode lohnt sich doch immer wieder - eine bessere Typo3 “Doku” gibt es nicht.

Tech 8. Dec. 2006

IE7: Kommandozeilenparameter (Command Line Switchs)

Manchen hat es angst gemacht, andere warteten sehnlichst und jetzt ist er da: der Internet Explorer 7.

Und natürlich hat sich einiges geändert, was in den meisten Fällen mit Sicherheit auch gut ist. Allerdings hat man sich an einige Features auch gewöhnt; z.B. den Kisok-Modus, der beim Drücken von F11 bisher den kompletten Bildschirm eingenommen hat und außerdem auch über JavaScript zu starten war.

Diese Funktion ist nun aus Sicherheitsgründen entfallen. Was aber, wenn man für eine Anwendung die lokal, im Intranet oder auf einem Kiosk-Terminal läuft trotz alledem in einem echten Fullscreen-Modus anzeigen möchte?

read more

Life 26. Nov. 2006

Vitale Softwarelösungen brauchen Pflege, Wartung und Technologiewandel

Als Unternehmen, welches individuelle Softwarelösungen entwickelt die mindestens mittelfristig oder langfristig eingesetzt werden sollen, gelangt man früher oder später an den Punkt, dass die einst sehr gute und aktuell noch produktiv eingesetzte Lösung nicht mehr mit einer vielversprechenden Perspektive weiterentwickelt werden kann. Aber warum eigentlich?

Der Bedarf des Kunden für diese Lösung ist meist unverändert vorhanden oder hat sich höchstens um verschiedene Aspekte erweitert, sei es dass zusätzliche Funktionen oder die Integration in andere Systeme benötigt wird. Hier kann also nicht das Problem liegen. Dies merkt man auch daran, dass der Kunde selbst eine Lösung gar nicht für veraltet ansieht. Sie löst ja alle Aufgaben nach wie vor und konnte in der Vergangenheit auch immer um weitere Aspekte erweitert werden. Also warum jetzt plötzlich nicht mehr?

Die Ursache liegt also doch eher auf der technologischen Seite. Mit einem gewissen Abstand zur IT ist dies zunächst verwunderlich, denn eine EDV Lösung basiert immer auf gewissen Standardtechnologien (verschiedenste Arten und Schichten von Hardware, Software und Vernetzung). Diese Technologien sind nicht mehr neu, weit verbreitet und bereits unzählig oft verwendet worden. Doch wie immer steckt der Teufel im Detail und die Technologien, die als Standard erscheinen sind es im Detail eben doch nicht. Besonders die Softwaretechnologie(n) verändern sich durchaus schnell. Dies bietet zwar immer neue Möglichkeiten, stellt aber vor allem dann ein Problem dar, wenn der Lebenszyklus einer Softwarelösung länger ist, als der ihrer zugrunde liegenden Technologie. Was passiert denn, wenn die Technologie veraltert?

read more

Life 19. Nov. 2006

Spam pragmatisch filtern - Piraterie im Web 2.0

Seit einer ganzen Weile macht mir die Flut an Spam zu schaffen. Zunächst war es die enorme Menge auf dem einen Mailaccount, dann auch auf den anderen. Und zudem eine ganze Reihe an kritischen False-Negatives; es ist eben nicht mehr nur nervig, wenn sich Kundenprojekte verzögern, weil die Kommunikation von Spam Filtern vernichtet wird (wobei die Inbox trotzdem voll davon ist).

Deswegen habe ich mich eingängig mit diesem Thema beschäftigt, jedoch keine wirklich neuen Erkenntnisse gewonnen. Die Konzepte sind überschaubar: ein Portfolio aus verschiedenen, lernfähigen Filtern und dazu eine Reihe an White- und Blacklists. Das ergibt ein großes klebriges Konstrukt, welches eine gute Sortierung ermöglichen kann.

Allerdings gehört dazu eine Menge Disziplin. SpamAssassin und ein clientseitiger Filter führen noch lange nicht zu einem akzeptablen Ergebnis - ein ausgiebiges Training ebensowenig. Also was tun?

read more

Tech 10. Nov. 2006

TYPO3: Achtung beim nachträglichen Filtern von Suchergebnissen

Leider können nicht immer ohne größere Anpassungen an der Indexed Search beliebige zusätzliche Filter-/Suchkriterien hinzugefügt werden. Wenn allerdings eigene Filterkriterien und gleichzeitig eine Stichwortsuche (z.B. auch in PDF Dateien) erfolgen soll, ist so etwas nötig.

Hierfür kann einfach die Indexed Search für die Stichwortsuche verwendet werden und anschließend über den Hook getResultRows das Ergebnis nachbearbeitet werden. Dies funktioniert soweit auch wunderbar.

Problematisch wird, wenn man sehr viele mögliche Treffer in einem Suchergebnis hat. Hier kommt nämlich die Maximalanzahl an Ergebniseinträgen der Indexed Search zum Tragen und man erhält nur diese Anzahl an Einträgen für die Weiterverarbeitung. Das fährt natürlich zu verwirrenden Ergebnissen, wenn man z.B. zunächst per Stichwortsuche sehr viele Resultate finden möchte, um sie anschließend weiter zu filtern. An dieser Stelle fehlen bereits eine Reihe an Suchergebnissen, die sinnvollerweise hätten erscheinen sollen.

Es ist also bei solch einer Anwendung darauf zu achten, dass die Einstellung für die Anzahl der Ergebnisse entsprechend hoch ist.

Tech 11. Aug. 2006

IE CCS Auto Clearing

Häufig macht der Internet Explorer merkwürdige CSS Cascaden, die entweder falsch oder nicht nachvollziehbar sind, zumeist aber unerwünscht.

Allerdings kann dies verhindert werden. Der Internet Explorer hat die Eigenschaft das sogenannte auto-clearing der Elemente nur dann anzuwenden, wenn diese eine Größenangabe haben. Gibt man den betroffenen oder potenziel betroffenen Elementen das Attribut

div.classname {

oder etwas ähnliches, werden die Styles wieder sauber angewendet. Da bleibt nur zu hoffen, dass es sich zufällig um Elemente handelt, wo eine Höhenangabe entweder möglich oder irrelevant ist.

Tech 18. Jul. 2006

TYPO3: Remote-Löchen des FE Caches

Beim Entwickeln von TypoScript oder Extensions nutze ich derzeit ausschließlich Eclipse und ein automatisiertes Deployment über Ant (sowohl lokal als auch für das live System).

Dabei werden zum einen alle veränderten Dateien im fileadmin und alle lokal vorhandenen Extensions aus typo3conf per FTP kopiert. Zum anderen soll hier aber auch der FE Cache gelöscht werden, um nicht mehr das Typo3 Backend für Script-Änderungen nutzen zu müssen und das Testing während der Entwicklung zu beschleuningen.

Bisher löschte ich den Cache immer mit dem sql-Task von Ant, was zwar lokal funktioniert, jedoch auf den meisten live-Systemen nicht möglich ist, weil zumeist die Ports zur Datenbank aus Sicherheitsgründen gesperrt sind.

Nun gibt es eine kleine Frontend Extension (j2h_remoteclearcache) die das Löschen des FE Caches ermöglicht. Sie wird als Frontend-Plugin auf einer beliebigen, möglichst unsichtbaren, Seite installiert. Anschließend kann diese Seite über die ID mit dem Ant-Task get angesprochen werden. Als Parameter wird ein Admin-User mit Namen und Passwort, optional auch ein md5-kodiertes Passwort, übermittelt. Ein Nebeneffekt ist, dass der Cache auch über die Webseite selbst gelöscht werden kann, indem man die Seite per ID über den Browser anspringt und hier Name und Passwort eines Admin-Users eingibt.

Sicherlich gibt es noch einige Verbesserungsmöglichkeiten, aber für die schnelle Entwicklung mit CVS, lokaler Entwicklungsumgebung und automatisiertem Deployment ist sie eine unerlässliche Hilfe.

Tech 14. Jul. 2006

TYPO3: Mehrsprachigkeit mit TemplaVoilá

Endlich ist eine 1.x Version von TemplaVoila! verfügbar, alsoeine gute Gelegenheit sich die neue Template Engine noch einmal genau anzusehen. Das bauen eines Seiten-Templates mit Menüs, Inhalt, Stylesheets usw. ging recht problemlos. Das Konfigurieren von RealURL war dann schon eher ein Trip, aber nach ein paar Versuchen auch lauffähig.

Letztlich mach die Kombination aus mehreren Sprachen (in einem Baum mit Translate Feature), RealURL und einem Sprachmenü (echt dynamisch und als Text) einige Probleme

Zunächst zu den Sprachmenüs. Das HMENU special language tut sich leider schwer einen Textlink mit dem Sprachkürzel (aus dem Backend) auszugeben; anstatt dessen wird ein Link auf die eigene Seite (als Ziel richtig, aber als Label falsch) ausgegeben. Dies kann nur (oder nicht) manuell per TypoScript überschrieben werden. Alternativ ist oft von sr_language_menu die Rede. Diese hat leider meine Typo3 Installation zum Absturz gebracht - schade. Letztlich bin ich auf die Extension cab_realurl_languageselector ausgewichen, welche anhand der RealURL Konfiguration ein Menü aufbaut, also genau das was man benötigt.

read more

Tech 18. May. 2006

BPEL vs. XForms

It took some weeks until I finally recieved the thesis of S. Perkles about Server-side XForms processing. Well, it deals not only about XForms but about building a XForm based frontend for BPEL processes. So I realized that “a Web service’s WSDL document provides all the information needed for creating an XForms based front end to the BPEL process” (Ch. 5.2.2). That’s right but was a new perspective for me.

Within the instance data of the XForm all data elements are included - and structured what is the idea of XForms. So after the validation the instance data could be mapped to a SOAP call, which finally invokes the BPEL process engine. All we need is a connector between the XForms processor and the BPEL engine, which maps the instance data of the XForm to SOAP.

But Perkles goes one step further. Since the WSDL document includes all definitions of the interaction and also references XML shemas for details and type definitions, all XForm-relevant information is actually given here. In consequence it is possible to generate the XForm or even to build a generic XForm, which represents the GUI part of any WSDL document. - A quite impressive idea. Actually I thought something more between the WSDL and the user frontend would be needed.

How that could be done is explained in the thesis. And because it sounds like theory I like to mention the sixth chapter, which presents a case study of an implementation using BPWW4J from IBM. I am curious if I am able to go through this.

Reference: Server-side XForms Processing - A Browser-independent Implemantation of the Next Generation Web Forms by Siegfried Perkles, 2003, TU Vienna

Another article: Send Part of an XForms Instance to a Web Service by developerWorks.

Tech 3. May. 2006


As we are planning and prototyping a new technology for web based business applications at form4, I am constantly looking for future proof components for not only the use case but the business case view.

So I started with a little research abount workflow engines like jBPM and ended up with BPEL and some articles about this language. Well, one interesting aspect is the business process perspective and a second is the independence of the implementation technology.

For some reasons we focus on MDA by using UML for modelling and Java J2EE for the runtime and so I was looking for engines which are able to supply those languages: UML -> BPEL -> J2EE. So I found some insteresting articles: MagicDraw is going to support BPEL, jBPM announced an alpha release of a BPEL support and something about BPEL vs. Java writte by BEA and IBM.

But still open: the prototype. But I had some tries with jBPM - for my desperation not that successful as expected, but I will give it another try.

Tech 13. Apr. 2006

TYPO3: deploy with eclipse

Not only Typo3 released its new version 4.0. While the ftp was transferring the files of the 4.0 version, I wrote the first working version of an automated typo3 deploy process. Usually we use eclipse with cvs for every project and deploy everything via ant. So why still working with BBedit or UltraEdit via ftp on the remote server within typo projects?

Now the automated task copies all files from my resource folder (typoscript, html, css, layout images), all content of the typo3conf folder (localconf, user extensions) to the remote host and finally clears the page cache. Because only changed files are copied the update is finished within less than ten seconds. Press F5 and see the result. Quite perfect.

Now I can use all the features of eclipse, there is always a proper backup and working in a team is much easier with cvs. So let’s see, what Typo3 4.0 brings with it …

Tech 12. Apr. 2006

Symbolize link target with CSS2

Who doesn’t know the idea of a little icon in front of a hyperlink to show where it goes to? I thought by using an attribute dependenp syntax in my css it should be quite easy. And it is:

<style media="screen" type="text/css">
	div.example a {
	div.example a[target=_self] {
	div.example a[target=_blank] {

<a target="_self" href="">Link with target self</a>

<a target="_blank" href="">Link with target blank</a>

But though it is CSS2 and of course not every browser has implemented that syntax, what a miracle - it doesn’t work in IE. So my little hack goes direct into the trash bin because until IE will support all the CSS2 features the link target should be part of CSS at all.

Tech 6. Apr. 2006


Some more about XForms. Thanks to a presentation of Jörn Turner (Chiba) the capabilities of XForms are much more clear to me now. My suggestion of using the switch syntax for multi screen forms was right. But XForms is able to solve much more as I expected such as external validation functions through customized xpath functions or the use of XML-shemas to use customized data types. I have to admit that the integrety of W3C standards brings much more benefits as I thought it could do. Next step: a midi-complex prototype.

Tech 5. Apr. 2006

Localized price formats in Java

A while ago I got the requirement to internationalise an application for creating and organising offers. As I found out how complex the formatting of dates and numbers is, if you are dealing with different countries and languages, I was quite happy that there is something like Java Locale.

So I realized that it seems to be common to write out a price in Euro with a Euro-Sign within the European Union and with EUR instead outside Europe and the similar with US-Dollar. Furthermore the position of the currency sign, the separator character for fractions, the space (or no space) between sign and value and the number of fraction digits are quite different per country or language … I was a kind of fascinated about all that details. All for all that you can easily use the Locale in combination with Currency and CurrencyFormat.

Perfect - I thought till today. So how should we deal with a Japanese locale, which should format and display prices in Euro? Well, probably use the instance of CurrencyFormat with an ISO sign, which allows using an individual currency. Wrong! The Euro-price with the Japanese locale is rounded to full numbers without fraction digits - but with by showing EUR as currency. So there is no way around, as setting the currency, the minimum fraction digits and the maximum fraction digits of the CurrencyFormat instance manually by using the default values of the used currency.

Now it works fine. The price is shown in the right currency, the format of the price value depends on the currency and the position of the sign, the space and the separator character are dependent on the used locale.

Tech 27. Mar. 2006

What about XForms and multi screen dialogs?

I am still curious about the ability of XForms for multi screen dialogs. Somehow the group element could used for splitting up a XForm into various screens. Probably the switch/case module is the right way, like Mozilla is using it in their Tax Form example.

But what about this:

“While the concept of an application-independent “screen flow managerâ€? that determines the next view is described in the Java BluePrints [16], no framework seems to exist yet that employs this pattern to implement complex dialog constructs such as the arbitrarily nestable modules and device-specific dialog flows offered by the DCF. The World Wide Web Consortium’s XForms initiative [5] is mostly concerned with the specification of widgets on pages and does not support nestable dialog modules.” (Matthias Book and Volker Gruhn, April 2004)

For sure there is no way around reading the specifications in detail and build some prototypes. I hope it will turn out that not only multi screen dialogs are possible but rather they could be used for (complex) workflows in web applications.

Tech 27. Mar. 2006

Office Apps @ AJAX

While reading the AJAX blog from time to time some nice applications came up to me and I am wondering how we are still using a desktop system in the offeice. Well, there are some reasons of course, but the todays weballpications are nearly as good as destop applications. The are some quite good word processors like AJAXwrite or Writely. But totally thrilling is the spreadsheet editor iRows. Image all theses high end features within a suite like Zimbras’s Collaboration Suite. Wao! That’s where it goes.