Category: Allgemein

TYPO3 Merksatz #4: USER_INT Inhalte sind nicht im Cache

Im Gegensatz zu USER werden USER_INT Inhalte nicht gecached.

[PHP]
/* Wird im Cache von Typo3 abgelegt */
page = PAGE
page.typeNum=0
includeLibs.phpdatei = media/scripts/example.php

page.30 = USER
page.30 {
userFunc = user_various->listMembers
reverseOrder = 1
}
[/PHP]

[PHP]
/* Wird bei jedem Aufruf neu geladen */
page = PAGE
page.typeNum=0
includeLibs.phpdatei = media/scripts/example.php

page.30 = USER_INT
page.30 {
userFunc = user_various->listMembers
reverseOrder = 1
}
[/PHP]

[random_content group_id=”211″ num_posts=”1″]

Kurz gebloggt: 1000 Awesome Things

Einer meiner Lieblingsblogs 1000 Awesome Things [http://1000awesomethings.com/] hat am 19. April 2012 das 1000. bzw. das Nummer 1 Awesome Thing veröffentlicht. Bin mal gespannt wie es weitergeht. Wer wissen möchte was es ist, kann folgender URL folgen: http://bit.ly/IP39pU

P.S. Habe die URL extra in Bit.ly verkürzt, damit die Überraschung bleibt.

Der größte Bug in TYPO3 ist …

… das Marketing. Auf dem TYPO3 Camp in Stuttgart konnte ich viele neue Features und Funktionen in TYPO3 kennenlernen die mir vorher größtenteils unbekannt waren, zusammengefasst in den Folien (http://www.slideshare.net/keinerweiss/unterforderte-typo3-kernfeatures) von Rüdiger Marwein.

Auf Slideshare gibt es viele weitere interessante Folien zum Thema TYPO3, absolut empfehlenswert auch die von Patrick Lobacher (http://www.slideshare.net/keinerweiss/unterforderte-typo3-kernfeatures).

Nach Rückfrage bei Rüdiger und Patrick, wie sie auf die Funktionen aufmerksam geworden sind, erzählten mir beide unabhängig voneinander, dass sie sie zufällig im Code entdeckt haben, als sie nach etwas anderem gesucht hätten. Insofern stellt sich die Frage ob es sich dabei nur um das obere Zehntel des Eisbergs handelt und in der Tiefe noch viele weitere hilfreiche Funktionen in TYPO3 versteckt sind.

Dabei programmieren sich die Funktionen sicherlich nicht von alleine in den Core. Somit ist bspw. fraglich, ab welcher Version es bspw. in der Filelist einen Papierkorb gibt, den man nur anlegen muss (_recycler_) damit er funktioniert (http://xavier.perseguers.ch/tutoriels/typo3/articles/trash-in-fileadmin.html).

[random_content group_id=”211″ num_posts=”1″]

MySQL Formate sortieren 1:1 – 4:3 etc

Leinwand- bzw. Displayformate werden in 1:1, 4:3, 16:9 oder 21:9 angegeben. Aufgrund des Doppelpunktes sind dies Strings bzw. Text, womit die Sortierung i.d.R. wie folgt aussehen würde:

[PHP]
1:1
16:9
21:9
4:3
[/PHP]

erwarten würde man dagegen wahrscheinlich eher eine Sortierung wie die folgende:

[PHP]
1:1
4:3
16:9
21:9
[/PHP]

Von Quadrat nach Rechteck, sozusagen. Die ist mit folgendem MySQL Query möglich

[PHP]
ORDER BY substring( replace( Formate, ‘:’, ” ) , 0, 2 )
[/PHP]

Bei mehr Formaten sollte darüber nachgedacht werden, ggf. eine Spalte “Sorting” anzulegen und dort einfach nummerische Werte einzutragen. Falls ihr eine andere clevere Idee habt, wie solche Formate über MySQL automatisiert sortiert werden können, würde ich mich über einen Kommentar freuen.

Selenium: Eindeutige Werte erzeugen mit aktuellem Datum

Zur Kontrolle bzw. zur Erhöhung der Übersichtlichkeit ist es in automatisierten Testfälle erforderlich, das die eingetragenen Werte eindeutig sind. Dies ist ggf. sogar durch die Anwendung erwünscht. Zur Erzeugung eines individuellen Wertes kann in Selenium beispielweise die Datumsfunktion genutzt werden. Selenium selbst stellt keine eigene Datums-Variable zur Verfügung, aber JavaScript tut dies und Selenium führt beliebigen JavaScript Code aus. Somit kann eine einmalige Variable schnell erzeugt werden.

[HTML]

store javascript{var d=(new Date()).getTime(); "myName" + d.toString()} uniqueName

[/HTML]

Für die spätere Verifizierung wird der per JavaScript erzeugte eindeutige Idenfifiert in einer Variable gespeichert und im nächsten Beispiel eingefügt. Grundsätzlich erhöht es die Lesbarkeit bzw. auch die Wartung, wenn alle Variablen, wie in der Programmierung üblich, am Anfang definiert werden.

[HTML]

type id=name ${uniqueName}

[/HTML]