Permalink

iTerm 2 · DNS Lookup Issue

Als großer Fan von iTerm 2 bin ich gestern Abend etwas zusammengezuckt.

Über Twitter bin ich mehr oder weniger zufällig über einen Bug gestolpert, der seit Version 3.0.0 besteht und der es ziemlich in sich hat:

Bildschirmfoto 2017-09-20 um 15.07.00-minishadow_1300px

Kurzgesagt kann es mit den Standardeinstellungen von iTerm 2 per DNS Request passieren, dass persönliche Daten (inkl. Passwörter) im Klartext über den DNS-Server des ISP versendet werden. Ein mehr als übles Sicherheitsrisiko, das in den Einstellungen von iTerm 2 behoben werden kann:

iTerm 2 Einstellungen > Advanced > Perform DNS lookups to check if URLs are valid? > NO

Dazu muss der Haken bei folgender Option entfernt werden:

iTerm 2 Einstellungen > Pointer > CMD-Click Opens Filename/URL (Semantic History)

Bildschirmfoto 2017-09-20 um 15.07.25-minishadow_1300px

Mittlerweile haben die Entwickler von iTerm 2 aber auch reagiert und mit Version 3.1.1 eine gefixte Version zum Download bereitgestellt, die die Standardeinstellungen berichtigt.

Daher: Unbedingt das Update einspielen!!!

-> https://www.iterm2.com

iTerm2 added a feature in version 3.0.0 which would perform DNS requests on the text under the cursor to get a hint whether it was a clickable URL. This was a bad idea because DNS requests are not privacy-preserving. The feature has been disabled by default in 3.1.1 in commit e4eb1063529deb575b75b396138d41554428d522.

I don’t have an excuse: I just didn’t give this issue enough thought. I apologize for the oversight and promise to be more careful in the future. Your privacy will always be my highest priority.

Bildschirmfoto 2017-09-20 um 15.09.45-minishadow_1300px

Permalink

Howto: Per Shortcut in macOS Apps einloggen (mit Hilfe von 1Password und Keyboard Maestro)

Trotz aller Kontroversen bin ich nach wie vor ein sehr großer Fan des Passwortmanagers 1Password.

Vor etwas mehr als zwei Jahren hatte ich auf die verfügbaren Tastaturkürzel der App aufmerksam gemacht und gezeigt, wie man sich über 1Password mini relativ einfach in Webseiten und Apps einloggen kann.

Bildschirmfoto 2017-08-25 um 11.02.06-minishadow

Während das Einloggen auf Webseiten (meistens) mit einem nur einem Klick oder Sprachbefehl erledigt ist, sind zum Einloggen in eine App schon mehrere Schritte notwendig.

Um diesen Workflow abzukürzen, hatte unser geschätzter Kollege Alexander vor gut zwei Wochen ein erstes Video-Tutorial erstellt, in dem er erklärt, wie man sich mit Hilfe von Keyboard Maestro und nur einem Mausklick, einem Shortcut oder auch nur durch das Starten einer App in Accounts einloggen kann.

Damit dieses erste Tutorial problemlos funktioniert, muss 1Password mini allerdings ständig entsperrt sein. Ist es das nicht, was bei vielen Nutzern der Standardfall sein sollte, funktioniert das Makro nicht und man muss sich etwas Neues einfallen lassen. Das hat Alexander auch getan und mit Hilfe des Keyboard Maestro Forums eine Lösung gefunden, die auf nur einem einzigen AppleScript basiert 😲

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

on run
  set searchTerm to "icloud"

  tell application "System Events"
    set preClip to (the clipboard) as text
    set elements to every UI element whose creator type is "1Ph*"
    if elements is {} then
      log "1Password Mini is not running"
      return false
    end if
    set mini to (first item of elements)
    set miniName to short name of mini
    log miniName & " is running as " & name of mini
    set isLocked to my isOPMiniLocked(miniName)
    open location "x-onepassword-helper://search/" & searchTerm
    if isLocked then
      if not (my waitForUnlock(miniName, 10)) then
        return false
      end if
    end if
    tell its UI element (name of mini)
      set frontmost to true
      set i to 0
      repeat
        try
          if (focused of text field 1 of window 1) is true then
            tell text field 1 of window 1
              set value to searchTerm
              perform action "AXConfirm"
            end tell
            delay 1.0
            keystroke "c" using {command down, shift down}
            delay 0.5
            set thePass to (the clipboard) as text
            exit repeat
          end if
        end try
        delay 0.1
        set i to i + 1
        if i > 100 then
          return false
        end if
      end repeat
  
      tell application "App Store" to activate
      delay 0.5
      keystroke thePass
      key code 36
      set the clipboard to preClip
    end tell
  end tell
end run

on isOPMiniLocked(miniName)
  tell application "System Events"
    tell application process miniName
      perform action "AXPress" of menu bar item 1 of menu bar 1
      set isLocked to (subrole of text field 1 of window 1 is "AXSecureTextField")
      delay 0.1
      key code 53 -- Escape key to close 1PMini window
      if isLocked then
        log "1Password Mini is locked"
        return true
      end if
      log "1Password Mini is unlocked"
      return false
    end tell
  end tell
end isOPMiniLocked

on waitForUnlock(pProcessName, pMaxTimeSec)
  local startTime, elapTime, errMsg
  set startTime to current application's NSDate's |date|()
  log startTime
  tell application "System Events"
    repeat
      set elapTime to (-(round ((startTime's timeIntervalSinceNow()) * 100)) / 100.0)
      if (elapTime > pMaxTimeSec) then
        set errMsg to "Max Time of " & pMaxTimeSec & " seconds exceeded waiting for " & pProcessName
        log errMsg
        return false
      end if
      try
        set roleMode to (subrole of text field 1 of window 1) of (application process pProcessName)
        if roleMode is "AXSearchField" then
          return true
        end if
      end try
      delay 0.1
    end repeat
  end tell
end waitForUnlock

Ohne jetzt in die Tiefen des Codes einzusteigen, muss gesagt werden, dass dieses Skript nur bedingt universell verwendbar ist. Je nachdem in welche App man sich einloggen möchte, muss das AppleScript an zwei Stellen angepasst werden.

Zum einen direkt am Anfang bei der Suche nach dem in 1Password hinterlegten Login. Zum anderen bei der App, für die ein Login benötigt wird.

KM_Macro_Screenshot_2017-09-08 um 09.52.01_1300px

Ist nun alles gut?! Mitnichten, denn für Leute wie mich, die eines dieser neumodischen MacBook Pro mit Touch ID verwenden, funktioniert das AppleScript nicht; zumindest wenn man Touch ID zum Entsperren von 1Password verwendet.

Aber auch hier kamen Alexander und ich nach einigen Überlegungen zum Ziel: Keyboard Maestro hat nämlich den Vorteil, dass man Bedingungen an am Bildschirm angezeigte Fenster bzw. Grafiken knüpfen kann.

Somit ist das vorherige AppleScript jetzt in zwei Teile zerhackt, funktioniert aber auch mit Touch ID 😎

KM_Macro_Screenshot_2017-09-08 um 09.51.21_1300px 2

Auch hier gilt wieder: das Makro ist nicht universell verwendbar, sondern muss für jeden App-Login an drei Stellen angepasst werden. Zu den aus dem ersten AppleScript bekannten Stellen kommt jetzt noch eine Grafik hinzu, die den gefundenen Login in 1Password mini identifiziert.

Zum finalen Anzeigen bzw. Nutzen der verschiedenen Logins empfiehlt es sich auf die von Keyboard Maestro zur Verfügung gestellten globalen Makro Paletten zu setzen. Hier genügt dann im Endeffekt ein Mausklick und man ist in App X oder App Y eingeloggt.

Bildschirmfoto 2017-09-08 um 11.19.40

Um jetzt das ganze Prozedere besser nachverfolgen und auch live in Aktion sehen zu können, hatte Alexander vor ein paar Tagen ein zweites Video erstellt, das das erste Tutorial ergänzt bzw. aktualisiert.

Viel Spaß beim Anschauen 📼

Die beiden hier vorgestellten Makros können übrigens hier heruntergeladen werden.

Permalink

Kurztipp: Faviconographer bringt Favicons zurück zum Safari

Auch wenn es vielleicht langsam nervt: ich muss noch mal kurz auf das Favicon Thema im Safari von vor ein paar Wochen zurückkommen.

Es gibt nämlich seit ein paar Tagen eine schlanke Lösung, wie man sich nun doch Favicons im Safari anzeigen lassen kann.

Wie sich herausstellte, hatte Daniel Alm, der Entwickler hinter der Zeiterfassungsapp Timing, durch den bereits vorliegenden Quellcode seiner App die gewünschte Funktionalität quasi umgesetzt.

Bildschirmfoto 2017-09-15 um 04.34.51

Das Problem war nur, dass Apple durch SIP keinen derartigen Code mittels einer Browser Erweiterung im Safari zulässt. Daher musste die Umsetzung über eine separate App namens Faviconographer erfolgen.

Nach der Installation muss man die App zunächst einmal bei den Bedienungshilfen in den macOS Systemeinstellungen > Sicherheit > Privatsphäre zulassen.

Bildschirmfoto 2017-09-05 um 02.35.12 2-minishadow

Anschließend hat man zwei Möglichkeiten, die auch in Kombination funktionieren:

  • Favicons in den Safari Tabs anzeigen lassen
  • Favicons bei den Lesezeichen in den Favoritenleiste des Safaris anzeigen lassen

Bildschirmfoto 2017-09-11 um 04.31.45 2-minishadow

Wie sieht das nun live aus?

Nun, die Ausgangsposition ist ohne irgendwelche Icons in der Tab- bzw. Favoritenleiste:

Bildschirmfoto 2017-09-11 um 11.05.08-minishadow

Lässt man sich die Favicons nur in der Tableiste anzeigen, wird daraus:

Bildschirmfoto 2017-09-11 um 11.06.02-minishadow

Kommt dann noch die Favoritenleiste dazu, sieht es so aus:

Bildschirmfoto 2017-09-11 um 11.09.36-minishadow

Ich konnte diesen Hack, wie Daniel seine App selbst nennt, schon in der Betaphase ausgiebig testen und er funktioniert erstaunlich gut.

Man muss allerdings mit kleineren Einschränkungen leben, die allesamt technisch bedingt sind:

So werden die Favicons nur angezeigt, wenn das Safari-Fenster aktiv ist. Dazu gibt es leichte Verzögerungen, wenn man Tabs oder das ganze Safari-Fenster verschiebt. Auch unter macOS 10.13 High Sierra gibt es bekannte Problemchen.

Daher gilt: einfach mal ausprobieren und dem Entwickler Feedback geben.

Der Faviconographer ist kostenlos und setzt macOS 10.12 Sierra oder höher zur Installation voraus. Eventuell läuft die App auch unter OS X 10.11 El Capitan. Das müsste allerdings mal jemand testen 😉

-> https://faviconographer.com

Permalink

iTunes Vorschau Webseiten für iOS Apps ab sofort ohne direkte Weiterleitung in den iOS App Store?! //UPDATE

Dem einen oder anderen ist bestimmt aufgefallen, dass die iTunes Vorschau Webseiten für iOS Apps seit gestern nicht mehr direkt nach iTunes bzw. in den iOS App Store weiterleiten. Außerdem fehlt die blaue Schaltfläche In iTunes anschauen, die sich zwischen dem Icon und dem Preis der App befand und mit der man iTunes ebenfalls starten konnte.

Handelt es sich nur um ein temporäres Problem?! Sind es finale Vorbereitungen für iOS 11 bzw. macOS 10.13 High Sierra?! Keine Ahnung.

Bildschirmfoto 2017-09-10 um 23.00.55-minishadow_1300px

Um diesem Phänomen entgegenzuwirken, können Nutzer des Safaris die Erweiterung NoMoreiTunes installieren.

Durch die Erweiterung, die eigentlich das Starten von iTunes bei App Store Links verhindern soll, wird nun oben recht eine kleine Schaltfläche erzeugt. Darüber lässt sich iTunes starten und die App direkt im App Store anzeigen.

-> http://nomoreitunes.einserver.de

Für Apps aus dem Mac App Store gilt diese neuerliche Einschränkung übrigens nicht. Hier funktioniert sowohl die direkte Weiterleitung, als auch die Weiterleitung über die Schaltfläche Im Mac App Store ansehen.

Darüber hinaus kann man auch hier die NoMoreiTunes Browser Erweiterung nutzen.

Bildschirmfoto 2017-09-10 um 23.03.47-minishadow_1300px

Wie gesagt: So recht kann ich mir darauf keinen Reim machen. Eventuell löst Apple auch endlich mal den iOS App Store aus iTunes heraus und plant eine eigene App.

Morgen sind wir schlauer 😉

Update 13.09.2017 09:44 Uhr

Nun ist die Katze aus dem Sack.

Bildschirmfoto 2017-09-13 um 09.41.36-minishadow_1300px

Auch wenn Apple dieses Thema bei der gestrigen Keynote nicht groß an die Glocke hing, muss man sich nur das Changelog zum neuen iTunes 12.7, das derzeit über den Mac App Store verteilt wird, anschauen.

Kurzgesagt liegt der Fokus von iTunes ab sofort auf Musik, Filmen, TV-Sendungen, Podcasts und Hörbüchern.

Bildschirmfoto 2017-09-13 um 10.00.12-minishadow

Der iOS App Store wurde entfernt und findet sich nur noch auf dem iPhone, iPad und iPod touch wieder 😧

-> https://support.apple.com/de-de/HT208075

Permalink

Howto: Icons für fixierte Tabs im Safari erstellen und nutzen

Vor ein paar Wochen hatte ich an dieser Stelle die Problematik um die fehlenden Favicons im Safari angesprochen. Eher am Rande erwähnte ich, dass der Safari bei fixierten Tabs sehr wohl eine Art Favicon anzeigt.

Im Standard werden festgepinnte Webseiten als kleines Tab auf der linken Seite des Safaris in der Tab-Leiste gesammelt. Das Icon wird dabei aus dem erste Buchstaben der Webseite generiert.

Bildschirmfoto 2017-09-06 um 16.50.44-minishadow

Gibt man sich damit nicht zufrieden, kann man mit etwas Aufwand auch ein eigenes Icon hinterlegen. Dieses muss allerdings im SVG-Format vorliegen und mit einer extra Zeile Code aktiviert werden.

Schritt 1

Zunächst benötigt man ein Logo bzw. Symbol, das die eigene Webseite repräsentiert; in unserem Fall der Space Invader.

Hat man kein Illustrator, Sketch oder Affinity Designer zur Erstellung der SVG-Datei installiert, gibt es auch diverse Online-Tools, die aus einer PNG-Datei das benötigte Format konvertieren.

Bildschirmfoto 2017-09-06 um 22.18.19

Wichtig ist dabei, dass der Hintergrund des Bildes transparent und das Logo selber in nur einer Farbe, nämlich 100% Schwarz, dargestellt wird. Als Größe werden 16×16 Pixel (32×32 Pixel für Retina Displays) benötigt.

Bevor sich jemand wundert: das hier erstellte „schwarze Logo“ dient nur als Maske. Die schlussendlich im Browser angezeigte Farbe des Icons wird erst in Schritt 2 festgelegt.

Schritt 2

Nachdem man die erstellte SVG-Datei auf seinen Server hochgeladen hat, muss man folgende Zeile Code in den Head-Teil (zwischen < head >…< /head >) seines HTML-Templates hinzufügen:

<link rel="mask-icon" href="/pinfavicon.svg" color="#990000">

Das href zeigt dabei auf die hochgeladene SVG-Datei. Die Farbe des Icons wird über color bestimmt, was in unserem Fall ein dunkleres Rot ist.

Das wars im Prinzip schon. Sollte das Icon anfangs übrigens nicht zu sehen sein, muss man den Safari beenden, den Ordner ~/Library/Safari/Template Icons löschen und den Safari anschließend neu starten.

(via)(via)

Permalink

AmorphousDiskMark für macOS · Benchmark für SSDs, Festplatten oder USB-Sticks

Zum Testen der Lese-/Schreibperformance von SSDs, Festplatten, USB-Sticks oder SD-Karten habe ich in der Vergangenheit immer wieder auf den AJA System Test gesetzt. Das Ergebnis ist mit zwei Zahlen sehr übersichtlich und man weiß im Groben, was man vor sich hat.

Möchte man ein detailliertes Ergebnis, das etwas mehr Freiheiten bei der Konfiguration der Lese-/Schreibtests zulässt, sollte man sich AmorphousDiskMark genauer anschauen.

Bildschirmfoto 2017-09-04 um 20.06.12-opt

Als Vorlage dieser kostenlosen App (mit gruseligem Icon) diente das in der Windows-Welt sehr stark verbreitete CrystalDiskMark.

Zur Installation wird OS X 10.8.5 Mountain Lion oder neuer vorausgesetzt.

-> http://www.katsurashareware.com/pgs/adm.html

Permalink

macOS Tipp: PATH Variable anzeigen und ändern

Gerade als Entwickler kann es vorkommen, dass man die $PATH Variable, eine Umgebungsvariable des Betriebssystems, die einen oder mehrere Pfade zu bestimmten Programmen oder Daten enthält, anpassen muss.

Um die aktuell gesetzten Werte dieser Variable auszulesen, genügt einer der beiden folgenden Terminalkommandos:

echo $PATH

printf "%s\n" $PATH

Bildschirmfoto 2017-08-29 um 09.23.57-minishadow_1300px

Im Ergebnis werden, durch Doppelpunkt getrennt, die gesetzten Pfade angezeigt:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin

Doch wie passt man diese Variable nun an? Hier gibt es verschiedene Möglichkeiten:

Variante 1

Die erste Variante besteht im Editieren der zur eingesetzten Shell passenden Konfigurationsdatei. Das hat den Vorteil, dass dieses Vorgehen nutzerbasiert und somit individuell ist. Da ich beim Editor auf Vim setze, kann das beispielsweise wie folgt aussehen:

vim ~/.bash_profile
vim ~/.profile
vim ~/.bashrc
vim ~/.zshrc

Anschließend kann man in der Konfigurationsdatei über das export Kommando die PATH Variable erweitern (abspeichern nicht vergessen):

export PATH=$PATH:/new/dir/location1

Um die Änderungen direkt nutzen zu können, muss das Terminal neu gestartet oder eine der beiden folgenden Terminalkommandos ausgeführt werden:

source ~/.zshrc
. ~/.zshrc

Abschließend überprüft man über eines der ganz am Anfang des Artikels erwähnten Kommandos, ob die PATH Variable auch tatsächlich geändert wurde.

Bildschirmfoto 2017-08-29 um 09.11.55-minishadow_1300px

Variante 2 (Admin-Rechte erforderlich)

In dieser Variante, in der Änderungen der PATH Variable für alle Nutzer gelten, sind die Pfade in einzelnen Dateien gruppiert. Dazu werden bzw. sind bereits Dateien mit den gewollten Pfadangaben im Verzeichnis /etc/paths.d angelegt. Um sich die existierenden Einträge anzusehen, benötigt man wieder ein Terminalkommando:

ls -l /etc/paths.d

Über das anschließende cat Kommando kann man sich den Inhalt der bereits existierenden Dateien ansehen:

cat /etc/paths.d/MacGPG2

Bildschirmfoto 2017-08-28 um 16.40.14-minishadow_1300px

Um jetzt die PATH Variable zu erweitern, muss man in /etc/paths.d eine neue Datei anlegen und diese mit dem gewünschten Pfad befüllen. Dafür benötigt ein Terminalkommando, für das man allerdings Admin-Rechte benötigt:

sudo -s 'echo "/new/dir/location1" > /etc/paths.d/location1'

Um die Veränderungen zu übernehmen, muss man das Terminal neu starten und man sollte, wie in Variante 1, überprüfen, ob die Veränderungen tatsächlich übernommen wurden.

Variante 3 (Admin-Rechte erforderlich)

Bei dieser letzten Variante handelt es sich um eine Abwandlung der Variante 2.

Anstatt einzelne Dateien anzulegen bzw. zu editieren, knöpft man sich die zentrale Datei /etc/paths vor und kann dort zeilenweise (untereinander) Pfade ändern, löschen oder hinzufügen:

sudo vim /etc/paths

Bildschirmfoto 2017-08-29 um 10.46.47-minishadow_1300px

Zur Info:
/etc ist ein symbolischer Link zum Verzeichnis /private/etc

Da beide den identischen Inhalt haben, können die Änderungen von Variante 2 und 3 auch in /private/etc erfolgen.

Bildschirmfoto 2017-08-29 um 10.59.01-minishadow_1300px