[Quicktip] Sudoers Zugriffsrechte in Mac OSX zurücksetzen

Da ich eben an der Provisionierung eines Macs via Ansible gespielt habe und dabei aus Versehen einen Syntax Error in der Datei /etc/sudoers drin hatte, war ich in der Falle. Ich konnte die Datei nicht mehr bearbeiten, weil ich nicht die nötigen Zugriffsrechte hatte, und sudo konnte ich auch nicht verwenden, weil ja ein Syntax Error drin war.

Die Lösung des Problems ist dann doch sehr leicht: Man öffnet den Finder, drückt “CMD + Shift + G” und trägt in das nun erscheinende Textfeld einfach “/etc” ein. Dann gelangt man in den im Finder versteckten Ordner und kann dort die Datei “sudoers” finden. Mit einem Rechtsklick auf die Datei kann man den Punkt “Informationen” aufrufen.

dateirechte

Dort im untersten Bereich “Freigabe & Zugriffsrechte” kann man die Dateirechte wieder korrekt setzen bzw. Schreibrechte für jedermann ermöglichen (vorher rechts unten auf das Schloss klicken und den Bereich damit entsperren). Nun kann man den/die Fehler in der sudoers korrigieren, anschließend die Schreibrechte wieder zurücksetzen und schon funktioniert sudo wieder.

[Quicktip] Macbook erkennt Thunderbold Ethernet Adapter nicht richtig

Sollte euer Mac den Thunderbold-Ethernet Adapter nicht erkennen bzw. sich über “Kabel nicht angeschlossen” beschweren (selbst nach einem Neustart), dann probiert mal folgendes aus:

Systemeinstellungen -> Netzwerk und dort den Thunderbold Adapter in der linken Spalte auswählen. Anschließend den Button “weitere Optionen” auswählen und dann zum Tab “Hardware” wechseln.

Hier sollte euch die Mac Adresse des Adapters angezeigt werden. Ist dies nicht der Fall, dann ist der Adapter wahrscheinlich hinüber. Wenn die Mac Adresse angezeigt wird, dann stellt das Dropdown “Konfiguration” auf “manuell” und bei “Geschwindigkeit” auf “automatisch”.

Bildschirmfoto 2016-01-04 um 18.33.26

Speichert das ganze und wartet kurz ab, dann sollte der Adapter das eingesteckte Netzwerkkabel wieder korrekt erkennen. Evtl. könnt ihr mit dem Abziehen und anschließendem erneuten Einstecken des Adapters etwas nachhelfen.

[Quicktip] OS X Quick Look Vorschau mit Plugins erweitern

Die OSX Quicklook Vorschau ist sehr praktisch – egal in welchem Dateidialog man sich gerade befindet, man kann jederzeit die Leertaste drücken und bekommt eine Vorschau der aktuell markierten Datei. Das geht mit PDF, Office Dokumenten usw. schon ganz gut, aber wirklich praktisch wird es erst mit zusätzlichen Plugins.

Unter https://github.com/sindresorhus/quick-look-plugins sind ein paar sehr interessante Plugins aufgelistet, die u.a. die die Anzeige von Quellcode incl. Syntax Highlighting oder auch JSON Dateien ermöglichen. Eine Übersicht, was die einzelen Plugins können, findet ihr auf der Seite. Wenn ihr die Tools einfach schnell installieren wollt, dann geht das folgendermaßen auf der Shell (Homebrew muss installiert sein):

brew tap Caskroom/cask
brew update
brew install Caskroom/cask/qlcolorcode
brew install Caskroom/cask/qlstephen
brew install Caskroom/cask/qlmarkdown
brew install Caskroom/cask/quicklook-json
brew install Caskroom/cask/qlprettypatch
brew install Caskroom/cask/quicklook-csv
brew install Caskroom/cask/betterzipql
brew install Caskroom/cask/qlimagesize
brew install Caskroom/cask/webpquicklook
brew install Caskroom/cask/suspicious-package

Anschließend sind alle Plugins direkt ohne Neustart aktiviert.

[Quicktip] Wie kann ich in Lightroom Bilder im Vollbild ansehen?

Meine Güte Adobe, man kann es auch deutlich komplizierter machen, als notwendig. Anstatt den Vollbild / Fullscreen Modus von Lightroom unter dem Menüpunkt “Ansicht” zu packen oder zumindest die Vollbild Funktion von Mac OSX anzubieten, wird diese Funktion unter Fenster / Ansichtsmodi versteckt. Und der Shortcut auf der Tastatur ist einfach die Taste “F” – nicht etwa CMD + F, wie man annehmen würde 😉

[Quicktip] SSH Key zu Github per Shell hinzufügen

Für alle, die sich unnötige manuelle Schritte beim Hinzufügen eines neuen SSH Keys zum eigenen Github Account sparen wollen:

mit

curl --data "{\"title\": \"NAME\",\"key\": \"`cat ~/.ssh/id_rsa.pub`\"}" --request POST https://api.github.com/user/keys --user "USERNAME:PW"

wird automatisch der Public SSH Key des aktuellen Benutzers im Github Account hinterlegt.
Unter NAME wird ein eindeutiger Name für den Schlüssel angegeben, USERNAME und PW sollten selbsterklärend sein.

Noch ein kleiner Tipp am Rand: bestehende Keys werden weder überschrieben, noch doppelt hinzugefügt.

[Quicktip] iPhone 5 kann keine SMS empfangen und versenden (Vodafone)

Gestern kam mein neues iPhone 5 an, ich spielte mein iCloud Backup vom iPhone 4 ein und alles lief bestens. Etwas später bemerkte ich dann jedoch, dass ich SMS weder empfangen noch senden konnte. Dieses Problem tritt eigentlich nur auf, wenn man mehrere SIM Karten im gleichen Vertrag hat. Mittels folgendem Code, den man einfach wie eine Telefonnummer “wählt”, wird die Karte im iPhone als Hauptkarte markiert:

*133#

Anschließend sollte der SMS Versand und Empfang wieder funktionieren. Diese Lösung funktioniert zumindest bei Vodafone. Wie es bei anderen Anbietern aussieht, kann ich nicht sagen.

[Update]
Bei der Telekom lautet der zu wählende Code:

*222#

Danke an die Hinweise in den Kommentaren dazu!

[Quicktip] Alle bisherigen Google Doodles anschauen

Durch Zufall bin ich darauf gestoßen, wie man sich alle bisherigen Google Doodles anschauen kann. Und zwar geht man dazu auf google.de / google.com und klickt dann einfach auf den rechten Button “Auf gut Glück” bzw. “I’m Feeling Lucky”. Und schon erscheint die Übersicht.

Alternativ kann man die Seite natürlich auch direkt aufrufen 😉

[Quicktip] Callback-Funktionen mit Javascript

Neben der Möglichkeit, unter Javascript anonyme Funktionen direkt als Parameter zu übergeben, kommt man vielleicht auch mal an die Stelle, dass man einer Methode den Namen einer anderen Funktion übergeben möchte, die diese dann nach Fertigstellung ihrer Aufgabe ausführen soll. Da man nicht einfach wie z.B. bei php den Funktionsnamen dynamisch per Variable angeben kann, muss man einen kleinen Trick anwenden. Und der geht so:

if(typeof window[funcName] == 'function') window[funcName]();

In der Variable “funcName” steht der Name der Funktion drin, die ihr aufrufen wollt. Der if-Block davor dient nur der Sicherheit – die Funktion wird nur aufgerufen, wenn es sie auch gibt. In der Klammer bei ” window[funcName]()” könnt ihr natürlich wie gewohnt Parameter übergeben.

[Update]
Und hier noch eine weitere Möglichkeit, die mir persönlich besser gefällt und die auch zuverlässiger funktioniert:

function funktionEins(data, callback) {
    //...
    //do something with data...
    //...
    //run our callback
    if(callback != undefined && typeof callback == 'function') callback();
}

Optional kann man natürlich auch Daten/Variablen an die Callbackmethode übergeben:

callback(data);

Wir haben nun also eine Ausgangsfunktion. Rufen wir diese nun auf und übergeben eine existierende Funktion oder eine anonyme Funktion, so kann diese ausgeführt werden:

function funktionZwei() {
    //do something
}
funktionEins("test", funktionZwei);

oder eben

funktionEins("test2", function(data) {
    alert(data);
});

mit einer anonymen Funktion, die in diesem Beispiel eben auch einen Parameter anbietet.

via selfhtml.org