Kategorie: Lifehacker

TYPO3 CMS 7+ Login Provider API und ’sorting‘

Mit der neuen Login Provider API von TYPO3 7+ ist es relativ einfach ein neues Backend Login Service (z.B. SSO) einzuführen.

Der Login Provider wird über ext_localconf.php registriert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders'][] = array(
   'provider' => \Plan2net\ExampleAuth\LoginProvider\ExampleLoginProvider::class,
   'sorting' => 200,
   'icon-class' => 'fa-example',
   'label' => 'LLL:EXT:example_auth/…/locallang.xlf:login.link'
);

und hier kommt der Fallstrick auf den ich aufmerksam machen möchte:

sorting bezieht sich nicht auf die Sortierung, die ja allgemein bei 0 beginnen würde (als erster Eintrag), sondern ist eine Priorität. Es zählt hier also der höchste Wert, dann der zweithöchste, usw. Will man seinen eigenen Login Provider als Standard eingetragen haben (statt dem üblichen Benutzername und Passwort), setzt man sorting auf einen hohen Wert wie oben im Beispiel.

Kleines Shell Script zum Auffinden von Bildern mit gewisser Größe

Voraussetzungen:

  • Bash
  • find, awk
  • identify von ImageMagick oder GraphicsMagick
#!/bin/bash

MIN_WIDTH=240
MIN_HEIGHT=200

# internal field separator, https://bash.cyberciti.biz/guide/$IFS
# changed to make file names with spaces work
OIFS="$IFS"
IFS=$'\n'
# find all files with type image
for image in `find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'`; do
# get image dimensions (width/height), ignore errors
       width_and_height=`identify -format '%w %h' "$image" 2>/dev/null`
       if test -n "$width_and_height"; then
               width=`echo "$width_and_height" | awk '{print $1}'`
               height=`echo "$width_and_height" | awk '{print $2}'`

               if [ "$width" -lt $MIN_WIDTH ] || [ "$height" -lt $MIN_HEIGHT ]; then
                       echo "wrong dimensions: $image $width x $height"
               fi
       else
               echo "unable to get image dimensions for $image"
       fi
done
IFS="$OIFS"

Können und Wollen sind nicht genug.

Können und Wollen als Grundvoraussetzungen für jede erfolgreiche Aktivität ist soweit seit tausenden Jahren klar. Diese zwei Voraussetzungen wurden hinreichend gelehrt und sogar zu einer „Können-Wollen-Matrix“ verarbeitet.

Aber diese Zwei sind nicht genug.
Es fehlt die Freiheit auch entscheiden zu dürfen Wann (Zeitpunkt) und Wenn (erkannte Notwendigkeit) man etwas mit seinem Können und Wollen darf.

Das klingt anfänglich vielleicht verwirrend erschliesst sich aber recht schnell sobald man verstanden hat, dass die freie Entscheidung das Richtige zum richtigen Zeitpunkt tun zu können das Gesamt-Ergebnis massiv verbessert.

Kurzum:

„Wenn ich nur darf, wenn ich soll,
aber nie kann, wenn ich will,
dann mag ich auch nicht, wenn ich muss.

Wie man ein git submodule wirklich loswird

Hier ein Beispiel wie man ein git submodule wirklich loswird (um danach z.B. im gleichen Pfad aus einem anderen Repository wieder ein neues anzulegen).

git submodule deinit typo3conf/ext/mysubmodule
git rm -rf typo3conf/ext/mysubmodule
rm -rf .git/modules/typo3conf/ext/mysubmodule
[1]
git commit -m "removed submodule mysubmodule"

[1] ohne diesem Schritt kann es zu folgender Fehlermeldung kommen, wenn man dann versucht wieder ein neues submodule im gleichen Pfad anzulegen:
A git directory for 'typo3conf/ext/mysubmodule' is found locally with remote(s):
origin https://github.com/old/mysubmodule.git
If you want to reuse this local git directory instead of cloning again from https://github.com/new/mysubmodule.git use the '--force' option. If the local git directory is not the correct repo or you are unsure what this means choose another name with the '--name' option.

Sinn, Wert und Nutzen – der Treibstoff für agile Teams

… und deren Projekte.

Ich habe soeben das perfekte T-Shirt gefunden für unsere agilen Entwicklungs-Teams, die Methoden wie Scrum, Kanban, XP Extreme Programming oder Lean anwenden:
Das T-Shirt mit Aufschrift: Sinn, Wert, Nutzen.

Dieses Shirt, bietet „eingebaut“ zwei grossartige Funktionen für Projekt-Workshops und Meetings:

  1. Die Gesprächspartner sind angehalten sich auf das Wesentliche zu konzentrieren und
  2. die Shirt-tragenden Person kann durch Körpersprache, dh. zB. einen kleiner Fingerzeig auf eines drei sichtbaren Worte (agile Prinzipien) optional kombiniert mit einem fragenden Blick – ala: „Welchen Sinn/Wert/Nutzen erreichen wir gerade?“ die laufende Kommunikation beeinflussen.

Nächste Woche bestelle ich mir meines.

Wer will auch Eines? Antworten bitte unter Angabe von Shirt-Typ + Size.

CSV / zwei Spalten mit VIM austauschen

%s/\(".*"\),\(".*"\)/\2,\1/g

Über sendmail ausgehende E-Mails an lokale Adresse umleiten

Manchmal (auf Entwicklungsumgebungen wohl immer)  ist es ganz praktisch, wenn keine E-Mails unabsichtlich ins Internet entschwinden. Vor allem, wenn man mit den Daten echter Kunden „jongliert“.
Damit man nicht immer daran denken muss, kann man sendmail so konfigurieren, dass eine lokale E-Mail Adresse als Smarthost verwendet wird und somit alle E-Mails in der lokalen Mailbox landen.

Und das geht so (gegebenenfalls muss sudo zum Einsatz kommen):

  1. # vim /etc/mail/sendmail.mc
  2. define(`SMART_HOST',`local:wklinger') am Anfang der Datei einfügen
  3. Konfiguration erzeugen: # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  4. sendmail neu starten: # /etc/init.d/sendmail restart

MacBook / OSX Lion / eingebautes Display abschalten bei Nutzung eines externen Displays

OSX Lion macht es einem nicht einfach, wenn man bei Anschluß eines externen Displays gerne das eingebaute Display abdrehen möchte.

Natürlich könnte man die Helligkeit komplett zurückdrehen, aber das ist nicht wirklich eine Lösung. Das Display ist erstens weiterhin aktiv und zweitens ist das Display auch noch für Anwendungen verfügbar, d.h. die Maus und manche Fenster verschwinden dann einfach im Bereich des (abgedunkelten) eingebauten Displays.

Eine weitere Möglichkeit besteht noch darin, das Notebook zuzuklappen. Das funktioniert auch ganz gut, nur fängt dann der Lüfter unweigerlich sehr stark zu laufen an und mit der Zeit geht einem das ziemlich auf die Nerven; ganz abgesehen von den ev. negativen Folgen eines Wärmestaus.

Postfix: alle mails kriegen

Manchmal machts (vorallem auf Entwicklungsservern) Sinn alle ausgehenden Mails unabhängig von der Empfängeradresse an einen Empfänger zuzustellen.

Postfix macht einem sowas recht einfach.

Nehmen wir an wir wollen alles an catchall@mydomain.invalid zustellen.

Als erstes tragen folgendes in die /etc/postfix/main.cf ein


always_bcc=catchall@mydomain.invalid
transport_maps = hash:/etc/postfix/transport

Damit werden schon mal alle Mails als bcc an catchall@mydomain.invalid gesendet.

Als 2. Schritt konfigurieren wir die Transport-Table (/etc/postfix/transport) so daß nur an diese Adresse zugestellt wird.


catchall@mydomain.invalid :
* discard:silently

Die erste Zeile bewirkt daß Mails an catchall@mydomain.invalid „normal“ zugestellt werden.
Die 2 Zeile verwirft Mails an alle anderen Empfänger.

Der Ultimative AdBlocker ist da

AdBlock Freedom

But the number one requested feature has been a way to block the ads that assault us all in the „real world“ — such as billboards, TV commercials, and magazine ads. Unfortunately, AdBlock hasn’t been available outside the browser window.

Until today. Introducing the beta version of AdBlock Freedom: augmented reality eyewear that detects and removes ads from the world in realtime.

Beta-Tester werden noch gesucht.

Anfrage