Wikipedia Lesbarkeit auf Widescreen

Wikipedia passt sich der Bildschirmbreite an. Das ist eigentlich cool, nur bei breiten Monitoren verschlechtert das die Lesbarkeit.

Hat man einen Wikipedia Account, kann man in seinen Einstellungen “Benutzerdefiniertes CSS” einsetzen und Wikipedia generell schmaler machen.

Mein benutzerdefiniertes CSS für einen maximal 1024 Pixel breiten Inhalt sieht wie folgt aus:

body, #mw-head {
  max-width: 1200px;
  position:relative;
  margin: 0 auto;
}
#content {
  max-width: 1024px;
}

Das muss man leider in jeder Sprache einzeln machen.

Deutsch
» Einstellungen -> Ausssehen -> Benutzeroberfläche > Dein Theme / Benutzerdefiniertes CSS
Englisch
» Preferences-> Appearance-> Skin > Your Theme / Custom CSS

TYPO3 FAL in einer eigenen Extbase/Fluid Extension einsetzen

Mittlerweile klappt das mit dem File Abstraction Layer (FAL) immer besser.

Und wie es klappt, folgt nun. Ziel ist, zwei FAL Felder in eine eigene Extension zu integrieren und alle nötigen Schritte bis zur Ausgabe im Fluid Template zu zeigen.

Die Extension im Beispiel heißt “falusage” und die Tabelle bzw das Model heißt “Root”.

  • Es wird von TYPO3 6.1 ausgegangen.
  • Es wird von einer Extension ausgegangen, die mit dem Extension Builder erstellt wurde. Dadurch bereits vorhandene Konfigurationen werden nicht erklärt.
  • Im Extension Builder wurden am Model “Root” zwei Felder “image” (ein Bild) und “files” (Dateien) konfiguriert und der Controller beherrscht eine List-Action.

Datei ext_tables.sql

CREATE TABLE tx_falusage_domain_model_root (
	# ...
	image varchar(255) DEFAULT '' NOT NULL,
	files varchar(255) DEFAULT '' NOT NULL,
	# ...
);

Datei Configuration/TCA/Root.php

$TCA['tx_falusage_domain_model_root'] = array(
	// ...
	'image' => array(
		'exclude' => 1,
		'label' => 'Image',
		'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', array(
			'appearance' => array(
				'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
			),
			'minitems' => 0,
			'maxitems' => 1,
		), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
	),
	'files' => array(
		'exclude' => 1,
		'label' => 'Files',
		'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('files', array(
			'appearance' => array(
				'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
			),
		), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
	),
	// ...
);

An getFileFieldTCAConfig wird der aktuelle Feldname übergeben. Die Funktion erzeugt einen großen Schwung Konfiguration.

Datei Classes/Domain/Model/Root.php

class Root extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
	// ...
	
	/**
	 * Image
	 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
	 */
	protected $image;

	/**
	 * Files
	 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
	 */
	protected $files;
	
	// ...
	
	/**
	 * Returns the image
	 *
	 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
	 */
	public function getImage() {
		return $this->image;
	}

	/**
	 * Sets the image
	 *
	 * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
	 * @return void
	 */
	public function setImage($image) {
		$this->image = $image;
	}

	/**
	 * Returns the files
	 *
	 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $files
	 */
	public function getFiles() {
		return $this->files;
	}

	/**
	 * Sets the files
	 *
	 * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $files
	 * @return void
	 */
	public function setFiles($files) {
		$this->files = $files;
	}
	
	// ...
}

“\TYPO3\CMS\Extbase\Domain\Model\FileReference” als Typ ist wichtig, “File” funktioniert wider erwarten nicht und zu ganz wilden Fehlern.

Datei Classes/Controller/RootController.php

class RootController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
	// ..
	public function listAction() {
		$roots = $this->rootRepository->findAll();
		$this->view->assign('roots', $roots);		
	}
	// ..
}

Datei Resources/Private/Templates/Root/List.html

Es folgen eine ganze Reihe Fluid Beispiel; wie man an welche Information rankommt.

Mein Model:                       root
Das FileReference Model:          root.image
Der sys_file_reference Datensatz: root.image.originalResource
Der sys_file Datensatz:           root.image.originalResource.originalFile

<f:for each="{roots}" as="root">
Orginal-Attribute:<br />
Dateiname:    {root.image.originalResource.originalFile.name}<br />
Titel:        {root.image.originalResource.originalFile.title}<br />
Beschreibung: {root.image.originalResource.originalFile.description}<br />
Alt-Text:     {root.image.originalResource.originalFile.alternative}<br />
UID:          {root.image.originalResource.originalFile.uid}<br />
Pfad:         {root.image.originalResource.publicUrl}<br /><br />

Referenz-Attribute:<br />
Titel:        {root.image.originalResource.title}<br />
Beschreibung: {root.image.originalResource.name}<br /><br />

Ausgabe als Bild:<br />
<f:image src="{root.image.originalResource.originalFile.uid}" alt="" /><br />
<f:image src="{root.image.uid}" alt="" treatIdAsReference="TRUE" /><br /><br />

Als Link:<br />
<a href="{file.originalResource.publicUrl}">{file.originalResource.title}</a><br /><br />

<f:for each="{root.files}" as="file">				
	<p>{file.originalResource.originalFile.title}</p>
</f:for>

</f:for>

Für Typoscript:

Für Typoscript gibt es hier ein paar Beispiele, aber keine Garantie ob insb. Forenbeiträge aktuell sind.

XHProf unter Windows und XAMPP installieren

XHProf ist ein Profiling Werkzeug für PHP. Da die meisten Webserver mit Linux laufen, ist der Aufwand XHProf über das Paketmanagement zuzuschalten sehr überschaubar.

Interessant wird es unter Windows. Da sind einige Schritte durchzuführen.

Ich gehe im Beispiel von einer XAMPP Spielwiese aus, wobei XAMPP unter C:\xampp installiert ist.
Weiterlesen

TYPO3, Extbase, Fluid und der Hauptspeicher

“Speicher ist billig” hat mein Informatik-Professor mal gesagt. ;)

Extbase-Extensions benötigen ein irrwitzig hohes Nesting-Level (vmtl wegen Rekursionen). Hat man xdebug installiert, knallt’s erstmal. Das hier hilft:

PHP php.ini

xdebug.max_nesting_level = 300

Fluid benutzt so komplizierte Reguläre Ausdrücke, dass der Apache-Standard-Stack unter Windows nicht ausreicht und bspw der Extension-Manager den Apache zum Absturz bringt. Diese Einstellung hilft:

Apache httpd.conf

ThreadStackSize 8388608

PHP Security Cheat Sheet

So simpel wie hilfreich: PHP Sicherheit durch kontextbezogenes Entwerten.

As simple as useful: PHP security by escaping context related.

» Download PHP Security Cheat Sheet (PDF)

Facebook Daten-Weitergabe an Anwendungen unterbinden

Standard-Einstellung bei Facebook ist, dass Anwendungen von Dir und Deinen Freunden Daten auslesen dürfen.

Ändern der Facebook Anwendungen Privatsphäre Einstellungen sollte eigentlich jeder machen um sich zu schützen vor der Daten-Weitergabe durch Freunde.

So ändern man die Einstellungen für Anwendungen in Facebook.
Weiterlesen

Neuen Ordner in Google Reader erstellen

Mit Google Reader organisiert man die RSS-Feeds der Blogs und News-Seiten, die einen tangieren.

Wenn das mal ein paar mehr werden, wünscht man sich, man könne sie über Ordner gruppieren.

Die Funktion ist vorhanden, aber nicht ganz so intuitiv zu finden. Und weil ich eben auch wieder lange danach suchen musste, hier ein Screenshot, der zeigt wie und wo man das macht:

TYPO3 Seite lädt mehrere Sekunden

Lösung für das Problem:

“Nach dem Cache-leeren lädt eine TYPO3-Seite ewig, beim zweiten Laden ist sie sehr schnell”

Für das Generieren einer Seite legt TYPO3 ein “lock” an. Ist der entsprechende Ordner in typo3temp für den Webserver nicht schreibbar, wird bis zu 150 Sekunden, also etwa 2 Minuten, gewartet.

Der Mißstand in der Konfiguration lässt sich auch im Installtool unter “Basic Configuration” erkennen.

TYPO3 ist jetzt ganz orange

Auf der Keynote der TYPO3 Conference in Stuttgart hat Robert Lemke alle Neuerungen im TYPO3 Universum vorgestellt.
Das sind unter anderem:

  • Alle Produkte der TYPO3 Familie werden TYPO3 im Namen tragen
  • Das Logo ist nun nur noch orange anstatt orange-grün
  • TYPO3 Phoenix ist tot, es lebe TYPO3 NEOS

Viele Videos von der Konferenz gibt es TYPO3 Youtube Channel:
http://www.youtube.com/user/typo3/videos

Den Artikel zu den Namensänderungen findet man auf typo3.org
http://typo3.org/news/article/a-brand-new-way/
Kritische Stimmen gab es bei typo3blogger
http://typo3blogger.de/die-marke-typo3-erfindet-sich-neu/


2012: mein erstes Barcamp Stuttgart #bsc5

Bislang verschlug es mich nur auf TYPO3 Barcamps, die etwa 100 Teilnehmer und einen starken Produktfokus haben und etwas um die 40 Euro kosten. Das Camp hier in Benztown hatte am Wochenende zum 22. September 2012 satte 300 Teilnehmer und war komplett kostenlos.

Bei 300 Personen sind 12 Session-Lanes mit je 6 Slots schnell gefüllt (das sind 72 Vorträge pro Tag).

Bei Barcamps stehen die Vorträge zu Anfang nicht fest. Es war überwältigend zu sehen, wie zum Start der Session-Planung bestimmt 40 Leute nach vorne strömten um freiwillig und kostenfrei Vorträge halten zu dürfen.

“Ich kann Euch was erzählen zu …, wer hätte daran Interesse?”

Obwohl ein starker Fokus auf Social Media und Co gelegen hat, sind die Themen aber grundsätzlich nicht darauf beschränkt. So gab es auch Hacking-, Abnehm-, Piraten-, Rechts-, Erziehungs-, Projektmanagement-, Kaffee- und Gründerthemen.

Die Vorträge, die ich mir angeschaut habe, hatten eher technischen Bezug.

Weiterlesen