#programmierung

How to create an internal URI in TYPO3

Sometimes you want to generate TYPO3 internal URIs programmatically. Now you could try to create the URL manually on your own, or use the UriBuilder class. This handy tool is pretty neat to create any kind of internal URI. In a controller this class is available by $this->getControllerContext()->getUriBuilder(). If you want to use the UriBuilder somewhere else, you need to load an instance of the class by the ObjectManager.

$objectManager = 
  GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager\ObjectManager::class);
$uriBuilder =
  $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder::class);

When you have access to an instance of the builder, it's pretty straight forward from now on. The class has a bunch of simple setters, to control the generation of the URI. Best practice is to reset all the options of the builder on start of every new URI creation.

read more ...
Share:

Overwrite the default layout in TYPO3

I'm pretty sure that many people search for this thing already. So did I. It took me quite a lot time to figure out, how to overwrite the default template in TYPO3 8.7. This layout comes with some annoying wrappings, like the new frames. So you may want to remove them too. When you know how, it's really easy to do. Just add a small part to your TypoScript setup.

lib {
  contentElement {
    layoutRootPaths {
      10 = EXT:page/Resources/Private/Layouts
    }
  }
}
read more ...
Share:

How to fully revert the most recent git commit

without using rebase

Sometimes, when I was too stupid to change the git configuration and pushed a commit with the wrong credentials again, I need to revert the most recent commit completely. And every time I have to do this, I need to search for the correct command.

So, for a short note: with the command below the last commit will be erased completely. Unlike a rebase, the commit can't be found in any branch from now on. More information can be found in this great post on Stack Overflow.

git reset --hard HEAD~1

Just great for all kind of mistakes. ;)

Share:

Counter Node für Node-RED

node-red-contrib-counter

Es gibt wirklich unzählige Nodes als Erweiterung für Node-Red. Was es bisher aber nicht gab, war ein einfacher Zähler für Nachrichten-Pakete. Und genau sowas habe ich für mein Projekt benötigt. Also was blieb mir anderes über, als kurzer Hand eine solche Node selber zu schreiben?! ;)

Die Node ist mittlerweile öffentlich auf GitHub, npm und über die offizielle Node-Sammlung verfügbar und kann somit wie jede andere Node installiert werden.

npm install node-red-contrib-counter
read more ...
Share:

Why is the 'load' event not beeing executed after updating to jQuery 3?

The problem can be occur when using/switching to jQuery 3. It's because all ready states in the new jQuery 3 are now fully asynchron. This means, that there is no given order for your code to be executed.

Because of this, it could happen, that load is been triggered **before** your ready state has been executed. When your ready function now finally gets triggered, your load listener is too late and will not be executed.

read more ...
Share:

PHP: yield is here!

Und gibt uns so viel mehr zurück ...

Was freue ich mich über das Feature in php 5.5: yield! Gut, klingt jetzt erst mal als Wort nicht sonderlich spannend. Es ist zugegeben auch nicht sehr umfangreich, aber für mich als Entwickler ist die Möglichkeit eine super Ergänzung.

Was macht man normalerweise, wenn man eine Liste an eine andere Funktion übergeben will? In gefühlt 98% der Fälle wird ein mit einer Schleife ein Array erstellt, in einem 1% macht man vielleicht ein Objekt draus und im übrigen Prozent der Fälle überlegt man es vielleicht doch anders zu machen. Der Nachteil ist natürlich generell, dass ein Array oder Objekt im Speicher liegt. Habe ich also Daten, die ich dann noch in ein Array/Object umpacke, um es in einem bestimmten Format an eine andere Funktion zu übergeben, habe ich gleich wieder neue Daten im Speicher liegen. Und jetzt kommt yield ins Spiel!

Mit der neuen Rückgabeart kann prinzipiell return ersetzt werden, yield gibt dann sequenziell Daten zurück. In Schleifen verwendet können so einfach, und vor allem ohne den Speicher zu belasten, Daten zurückgegeben und weiter verarbeiten.

read more ...
Share:

Lazy 0.1.16 erschienen

Die neuste Version meines Plugins Lazy für jQuery ist vorhin auf GitHub erschienen. Die Changelog dazu ist eher überschaubar. Neben einer etwas ausführlicheren Beschreibung auf GitHub kam hauptsächlich ein neues Feature dazu, welches hoffentlich praktisch ist.

Mit dem neuen Callback onFinishedAll wurde ein neues Event hinzugefügt, welches einmalig nach dem laden aller Bilder aufgerufen wird. Hierbei spielt es keine Rolle, ob alle Bilder korrekt geladen, oder Teile nur fehlerhaft geladen werden konnten.

$('img').lazy({
  onFinishedAll: function() {
    console.log('we're finished here!');
  }
});
read more ...
Share:

Logger in Zend Framework 2 über Modul Config erstellen

Wer das Zend Framework kennt wird vermutlich auch schon Kontakt mit Zend\Log und dem Thema logging gehabt haben. Mit dem ZF2 wurden viele Dinge verändert und auch der Logger blieb davon nicht verschont. Leider lässt aber die Dokumentation aktuell noch zu wünschen übrig. Wer eine Logger-Instanz über die Modul-Config (modul.config.php) erstellen will, wird vermutlich das gleiche Problem wie ich bekommen, dass man keine wirklichen Informationen dazu findet. Die Optionen für ein Config-Array sind einfach nicht ausreichend erklärt oder überhaupt aufgeführt.

Nachdem ich die diversen Dateien aus dem Zend\Log durchgesehen habe, konnte ich weitgehend die Konfiguration nachstellen. Somit ist es im Endeffekt leicht möglich eine Instanz des Loggers komplett in der Konfigurationsdatei zu erstellen, ohne irgendwelche Einstellungen hardcoded abzulegen; wenn man weiß wie. :)

read more ...
Share:

Arduino Yún Bridge nutzen für TCP Kommunikation

über eigenen Port mit YunServer und YunClient

Mit einem Arduino über Netzwerk zu kommunizieren ist generell nichts Neues. Auch der Yún mit WLAN und Ethernet macht da an sich keine Ausnahme. Die bekannte Ethernet Library steht wie gewohnt auch auf dem Yún zur Verfügung. Zusätzlich dazu bietet der Yun aber mit YunServer und YunClient zwei neue Klassen, welche für Netzwerkkommunikation eingesetzt werden können. Beide gehören zur mit dem Yún eingeführten Bridge Library.

Und das sollte man auch durchaus in Betracht ziehen, denn die beiden Klassen sind bereits auf dem Yún vorhanden und belegen daher in einem Sketch keinen zusätzlichen Speicher. Bei größeren Sketches kommt man irgendwann an die Grenzen des verfügbaren Platzes, da sollte man sparen wo man kann.

Für die Verwendung von YunServer und YunClient gibt es grundlegend zwei Möglichkeiten. Einmal die vorkonfigurierte Lösung über Port 5555 und der REST Api, sowie zum anderen die etwas komplexere Möglichkeit der direkten TCP Verbindung, welche auch über einen eigenen Port erfolgen kann. Im Folgenden möchte ich beide Ansätze kurz vorstellen und erläutern. Gerade bei der TCP Variante bin ich selbst auf einige Probleme gestoßen, bis diese wie gewünscht funktionierte.

read more ...
Share: