Archiv ‘Apple’

Mittwoch, 14. Oktober 2020

iPhone ist „Offline“ und kann in Instruments nicht für ein Profiling Template ausgesucht werden

Kürzlich plagte mich die Vermutung, dass ein oder mehrere (Hintergrund-)Prozesse auf meinem iPhone markant viel Leistung verbrauchen.

Ich machte mich auf die Suche nach Debug-Lösungen und wurde auf Apple Instruments aufmerksam, ein Tool, welches mit Apple xCode mitgeliefert wird.

Doch leider war es mir nicht möglich, das iPhone auszuwählen:

image-9432

Ich habe dann rasch aufgegeben, denn das Problem scheint bisher nicht mehr aufgetreten zu sein.

Doch heute nun habe ich eine mögliche Lösung gefunden: iOS App Wireless Profiling with Instruments: iPhone Always Offline.

Tags: , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Montag, 28. September 2020

Mit coconutBattery unter macOS die Batterie von iPhone und iPad überprüfen

Seit längerem besitze ich eine Plus-Lizenz von coconutBattery. Dieses nützliche Tool zeigt die Batterie-Eigenschaften von iPhones und iPads an, die mit dem Mac verbunden sind.

Hier der Screenshot meines mittlerweile verkauften iPads:

image-9362

Relevant sind folgende Attribute:

  • Manufacture date: An welchem Datum das Gerät hergestellt wurde
  • Design capacity: Die maximale Kapazität der Batterie, als das iPad vom Förderband lief
  • Full Charge Capacity: Die mittlerweile noch verbleibende maximale Kapazität der Batterie. Mit dem Gebrauch und jedem Ladezyklus sinkt die Kapazität; der Wert hier kann höchstens gleich der Design capacity sein, in den allermeisten Fällen wird der Wert aber unter der Design Capacity liegen
  • Unterhalb Design capacity (in Prozent): Die noch verbleibende maximale Kapazität im Verhältnis zur Design Capacity. Oder umgekehrt (wenn von 100 subtrahiert): Wie viele Prozent Kapazität die Batterie verloren hat, seit sie vom Förderband lief
  • Cycle Count: Wie viele Male die Batterie vollständig aufgeladen worden ist

Hier die Werte des (gebrauchten) iPads, welches ich als Ersatz für das oben abgebildete iPad Pro gekauft habe:

image-9363

Wer also auf Tutti oder Ricardo nicht die Katze im Sack kaufen will, fragt den Anbieter an, einen solchen Screenshot zu posten. Dieser beantwortet alle offenen (Batterie-)Fragen.

Tags: , , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Samstag, 13. Juni 2020

Geniales Unboxing-Video

Die Qualität, die Musik, der Schnitt …

… im Gegensatz zu den Kommentaren unter dem Video gehe ich bei meinem derzeitigen Wissensstand davon aus, dass die Räder für den neuen Mac Pro die $699 tatsächlich wert sind.

Tags: , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 8. März 2020

Mail.app unter macOS High Sierra sortiert IMAP-Ordner nicht (mehr) alphabetisch

Das Problem löst man, indem man Apple Mail zuerst schliesst und die Datei .mboxCache.plist des betroffenen IMAP-Kontos löscht.

Mit dem folgenden Befehl findet man alle von Mail.app angelegten Dateien mit diesem Namen:

$ find ~/Library/Mail -maxdepth 3 -type f -name .mboxCache.plist

Wer die Dateien gleich löschen möchte:

$ find ~/Library/Mail -maxdepth 3 -type f -name .mboxCache.plist -exec rm '{}' ';'

ACHTUNG: Bitte kopiert den zweiten Befehl auf eigene Verantwortung von hier. Der Befehl LÖSCHT Dateien auf deinem Computer — wenn alles gut geht nur diejenigen Dateien, die hier beschrieben wurden. Ich übernehme aber keine Gewähr..

Quelle: Using Apple Mail, my folders have stopped being displayed in alphabetical order – how can I restore this sort order?

Tags: , , , , , , ,
Labels: Apple

1 Kommentar | neuen Kommentar verfassen

Sonntag, 8. März 2020

MacPorts s-nail unter macOS meldet „Cannot find a usable character set to encode message“

Kürzlich habe ich hier beschrieben, wie ich meinem iMac endlich beigebracht habe, E-Mails von der Kommandozeile zu versenden.

Heute dann die Erkenntnis, dass ein Cron- Launchd-Job folgende Fehlermeldung ins Log ausspuckt:

mail: Cannot find a usable character set to encode message: No such entry, file or directory
mail: ... message not sent

Ich habe mir dann den zu versendenden Mail-Body in eine Datei ausgegeben und überprüft, ob dort Nicht-ASCII-Charakter vorkommen (Unter Linux Nicht-ASCII-Charakter in einer Datei ausgeben). Volltreffer! Im E-Mail-Text finden sich deutsche und französische Umlaute, die als UTF-8 abgelegt sind.

Das Problem habe ich gelöst, indem ich /opt/local/etc/mail.rc um folgende Zeilen ergänzt habe:

...
set ttycharset=utf-8
set charset-8bit=utf-8
...

Seither klappt es mit dem Versand des E-Mails.

Meine Vermutung ist, dass bei launchd-Prozessen gewisse Umgebungsvariablen nicht mitkommen, die s-nail verwendet, um das Terminal-Charset zu eruieren.

Nachtrag

Die Fehlermeldung wird in Zeile 2334 des Source Codes generiert (Stand: 8. März 2020).

Tags: , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 1. März 2020

Unter macOS High Sierra mit MacPorts, postfix und s-nail E-Mails versenden

Emails von der Kommandozeile versenden — was man bei Linux im Handumdrehen hinkriegt, erforderte bei mir unter macOS stundenlange Handstände.

MacPorts postfix anstelle macOS postfix

Doch jetzt habe ich den Kniff raus: Die von macOS mitgelieferte postfix-Installation habe ich schlussendlich ignoriert und auf das MacPorts postfix-Paket gesetzt.

MacPorts Variants nicht vergessen

Der erste Fallstrick lauert schon hier: Um heutzutage über einen Hoster E-Mails zu versenden, benötigt man zwingend SASL und TLS. Diese Features müssen als sog. MacPorts Variants explizit mitinstalliert werden, sonst landen sie nicht auf dem Mac:

# port install postfix +sasl +tls

Ansonsten meldet postfix:

...
Mar 01 14:16:11 imac postfix/smtp[70687]: warning: smtp_sasl_auth_enable is true, but SASL support is not compiled in
Mar 01 14:16:11 imac postfix/smtp[70687]: warning: TLS has been selected, but TLS support is not compiled in
...

Verzeichnisse und Pfade zur Sicherheit hardkodieren

Eine funktionierende postfix-Konfiguration mitsamt Installationsscript habe ich von meinen Linux-Servern herüberkopiert (diese Anleitung alleine würde das Format dieses Blog-Artikels sprengen). Die Konfiguration habe ich aber mit den MacPorts-Einstellungen ergänzt. Denke daran: Bei Linux liegen die Konfiguration sowie die Arbeitsverzeichnisse allesamt am erwarteten Ort (bspw. /etc/postfix/main.cf). Da wir unter macOS auf MacPorts setzen, liegt dieselbe Datei hier unter /opt/local/etc/postfix/main.cf. Deshalb habe ich zur Sicherheit in main.cf folgende von MacPorts vorgeschlagene Ergänzungen (siehe /opt/local/etc/postfix/main.cf.sample) hinzugefügt:

$ cat /opt/local/etc/postfix/main.cf
# Directories
queue_directory = /opt/local/var/spool/postfix
command_directory = /opt/local/sbin
daemon_directory = /opt/local/libexec/postfix
data_directory = /opt/local/var/lib/postfix
meta_directory = /opt/local/etc/postfix
manpage_directory = /opt/local/share/man
sample_directory = /opt/local/share/postfix/sample
readme_directory = /opt/local/share/postfix/readme
shlib_directory = no
html_directory = no

# Paths
sendmail_path = /opt/local/sbin/sendmail
newaliases_path = /opt/local/bin/newaliases
mailq_path = /opt/local/bin/mailq

# Log
maillog_file_prefixes = /var, /var/log/macports/postfix
maillog_file = /var/log/macports/postfix/postfix.log

# Other stuff ...
mail_owner = _postfix
setgid_group = _postdrop
default_privs = nobody
unknown_local_recipient_reject_code = 550
debug_peer_level = 2
...

Logs in eine Datei schreiben

Weiter hatte ich während dem Debuggen so meine liebe Mühe, die Logging-Informationen zu finden, da diese an syslog gesendet werden und bei macOS dann in der Console.app landen. Deshalb habe ich im Gegensatz zu meinen Linux-Installationen auch noch die Konfigurationsdatei /opt/local/etc/postfix/master.cf anpassen müssen. Essentiell war es, die folgende Zeile einzufügen:

...
postlog   unix-dgram n  -       n       -       1       postlogd
...

Quelle: Postfix logging to file or stdout

Verhindern, dass fälschlicherweise die macOS postfix-Konfiguration geladen wird

Damit mir die Parallelinstallation von Postfix nicht in die Quere kommt und ich mir sicher war, dass die MacPorts-Installation von postfix tatsächlich die Konfiguration unter /opt frisst, habe ich kurzerhand den macOS postfix-Ordner verschoben:

# mv /etc/postfix /etc/postfix.bkp

Ob das wirklich nötig gewesen wäre sei dahingestellt; Vorsicht, wer das auf seinem System macht: Ich garantiere für nichts.

Postfix starten und stoppen

Die Postfix-Installation lädt man folgendermassen:

# port load postfix
# launchctl unload /Library/LaunchDaemons/org.macports.postfix.plist
# launchctl load -w /Library/LaunchDaemons/org.macports.postfix.plist

Die plist-Datei zeigt als symbolischer Link nach /opt/local/etc/LaunchDaemons/org.macports.postfix/org.macports.postfix.plist. In dieser Datei habe ich folgendes angepasst/ergänzt — das ist nicht zwingend nötig, sollte aber dazu führen, dass Postfix bei jedem Neustart automatisch gestartet wird. Ausserdem sollten im Fall von Start-Problemen Fehlermeldungen in eine Log-Datei geschrieben werden:

...
        <string>--pid=none</string>
    </array>
    <key>Disabled</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/var/log/launchd.macports.postfix.standard.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/launchd.macports.postfix.error.log</string>
</dict>
</plist>

s-nail verwendet standardmässig die macOS mail-Executables

Anschliessend musste noch eine Mail-Programm her, welches erlaubt, den Absender eines E-Mails selber zu setzen. MacPorts bietet hierzu s-nail an (Homepage des Entwicklers).

# port install s-nail

Als ich mit s-nail ein Test-Mail versenden wollte folgte eine weitere Hiobs-Botschaft:

$ echo "Test email" | mail user@domain.tld
unknown: fatal: open /etc/postfix/main.cf: No such file or directory
/Users/user/dead.letter 7/135
mail: ... message not sent

Ich übertreibe nicht, wenn ich sage, dass ich Stunden mit Debugging verbracht habe. Bis ich plötzlich realisierte, dass s-nail die offiziellen Mail-Executables mail, mailx und/oder sendmail unter /usr/bin verwendet. Der Lackmus-Test: Wenn ich diese Mail-Executables manuell aufrief, erschien ein- und dieselbe Fehlermeldung.

Dies obwohl meine Bash PATH-Variable /opt/local/bin und /opt/local/sbin vor /usr/bin und /usr/sbin nennt, verwendete s-nail aus irgendeinem Grund standardmässig die letztgenannten Pfade.

Wie sage ich s-nail aber, dass es stattdessen die MacPorts mail-Befehle verwenden soll? Folgende Anpassung in /opt/local/etc/mail.rc war nötig:

...
set mta=/opt/local/sbin/sendmail

Absender (From:) der E-Mails selber festlegen

Anschliessend musste noch eine Mail-Programm her, welches erlaubt, den Absender eines E-Mails selber zu setzen. Ich verwende in Bash-Scripts sehr oft folgendes Konstrukt, und ich wollte sicherstellen, dass die Scripts sowohl unter Debian GNU/Linux als auch macOS laufen (Argument -a):

$ echo -e "Test" | $(which mail) -a "From: DNS Query Analyzer " -s 'Top 25 DNS Queries' user@domain.tld another.user@domain.tld

Ich habe leider eine schlechte, aber auch eine gute Nachricht. Die gute: Man kann auch unter macOS den Absender setzen. Leider aber nicht mit demselben Befehl wie unter Debian GNU/Linux.

Bei s-nail muss ich leider ein anderes Argument verwenden:

$ echo -e "Test" | $(which mail) -r "DNS Query Analyzer " -s 'Top 25 DNS Queries' user@domain.tld another.user@domain.tld

Postfix hat Probleme mit selber gesetzter Absenderadresse und SPF Records

Doch nun trat bereits das nächste Problem auf, wie ein Blick in die leere INBOX und in /var/log/macports/postfix.log zeigte:

...
Mar 01 15:43:59 imac postfix/smtp[81049]: 4D0E3FBBE221: to=<user@domain.tld>, relay=s000.cyon.net[149.126.4.000]:25, delay=20, delays=0.03/20/0.03/0.04, dsn=5.0.0, status=bounced (host s000.cyon.net[149.126.4.000] said: 550 SPF: 1.2.3.4 is not allowed to send mail from emeidi.com (in reply to RCPT TO command))
...

Faszinierend. Unter Linux hatte ich eine solche Fehlermeldung noch nie gesehen. Ich verwende für den Versand „offizieller“ E-Mails jeweils emeidi.com als Absenderadresse.

Schlussendlich blieb nur die Holzhammer-Methode. Ich verschob alle Konfigurationsdateien, welche auf meinen Linux-Installationen nicht existierten, von /opt/local/etc/postfix in den Unterordner _old. Schlussendlich sah das Verzeichnis so aus:

$ find /opt/local/etc/postfix/opt/local/etc/postfix
/opt/local/etc/postfix/_old
/opt/local/etc/postfix/_old/access
/opt/local/etc/postfix/_old/access.sample
/opt/local/etc/postfix/_old/aliases
/opt/local/etc/postfix/_old/aliases.sample
/opt/local/etc/postfix/_old/bounce.cf.default
/opt/local/etc/postfix/_old/canonical
/opt/local/etc/postfix/_old/canonical.sample
/opt/local/etc/postfix/_old/generic
/opt/local/etc/postfix/_old/generic.sample
/opt/local/etc/postfix/_old/header_checks.sample
/opt/local/etc/postfix/_old/LICENSE
/opt/local/etc/postfix/_old/main.cf.default
/opt/local/etc/postfix/_old/main.cf.proto
/opt/local/etc/postfix/_old/main.cf.sample
/opt/local/etc/postfix/_old/master.cf.proto
/opt/local/etc/postfix/_old/master.cf.sample
/opt/local/etc/postfix/_old/relocated
/opt/local/etc/postfix/_old/relocated.sample
/opt/local/etc/postfix/_old/TLS_LICENSE
/opt/local/etc/postfix/_old/transport
/opt/local/etc/postfix/_old/transport.sample
/opt/local/etc/postfix/_old/virtual
/opt/local/etc/postfix/_old/virtual.sample
/opt/local/etc/postfix/header_checks
/opt/local/etc/postfix/main.cf
/opt/local/etc/postfix/makedefs.out
/opt/local/etc/postfix/master.cf
/opt/local/etc/postfix/postfix-files
/opt/local/etc/postfix/sasl
/opt/local/etc/postfix/sasl/outgoing
/opt/local/etc/postfix/sasl/outgoing.db

In sasl/outgoing entfernte ich zudem den TCP-Port nach der Server-Adresse, und master.cf ergänzte ich mit Zeilen, die bisher nur unter Linux existierten.

Heureka

Und jetzt endlich kann ich mir von der Kommandozeile aus E-Mails senden. Hat nur geschlagene sechs Stunden gedauert.

Tags: , , , , , , , , , , , , , , , ,
Labels: Apple, IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 15. Januar 2020

Mit einem Apple Smart Keyboard auf dem iPad die virtuelle Tastatur einblenden

Am Montag habe ich mein iPad Pro 9.7″ von 2016 mit einem baugleichen Occasionsmodell ersetzt.

Gründe waren, dass einerseits die Kapazität des Akkus spürbar abgenommen hat. Das wäre noch einigermassen zu verkraften gewesen. Doch seit ein paar Wochen habe ich Probleme mit dem Smart Connector im Zusammenspiel mit einer Logitech Base Ladestation und der Logitech Create Tastatur. Sowohl das Laden als auch die Tastatur funktioniert nur noch sporadisch. Und die Tastatur auch nur noch, wenn man das iPad in einem bestimmten Winkel zum Smart Connector-Anschluss hält.

Das neue „alte“ iPad konnte ich auf Ricardo für einen günstigen Preis ersteigern, insbesondere wenn man bedenkt, dass die Auktionsware mit einem etwas mehr als einem Jahr alten Apple Smart Keyboard für das iPad Pro 9.7″ geliefert wurde.

Im Gegensatz zur Logitech Create-Tastatur verfügt die Apple-Tastatur über keine Funktionstasten, und auch über keine Tastatur-Taste, welche unter iPadOS die virtuelle Tastatur auf dem Bildschirm anzeigen würde (Apple nennt diese „Software Keyboard“). Und so stand ich heute morgen das erste Mal vor dem Problem, dass ich mit angeschlossenem Smart Keyboard die Software-Tastatur anzeigen lassen wollte, aber nicht herausfinden konnte, wie man das macht.

Zwar hat Apple einen Support-Artikel „Use your Smart Keyboard Folio or Smart Keyboard with iPad Pro“ veröffentlicht, der auch auf diesen Punkt eingeht:

Switch to software keyboard

You might need to use your software keyboard instead of the Smart Keyboard Folio or Smart Keyboard to do things like type accented characters or use dictation. To show the software keyboard, tap the down arrow key on your Smart Keyboard Folio or Smart Keyboard, then touch and hold [Pfeil nach unten-Symbol] until the software keyboard appears. To hide the keyboard again, tap [Tastatur über Pfeil nach unten-Symbol].

Learn more about using iOS keyboards.

Der Hilfetext ist aber derart schlecht geschrieben, dass ich ihm nicht folgen konnte und es nicht geschafft habe, die Software-Tastatur anzuzeigen. Ich tippte wie blöd auf der Cursor-Taste herum, ohne dass sich auf dem Bildschirm etwas tat.

Erst nach dutzenden Minuten Recherche dann stiess ich auf folgendes YouTube-Video:

Wie beim iPad-Besitzer im Video war bei mir die Option „Shortcuts“ nicht aktiviert. Man findet sie unter Settings > General > Keyboard > Shortcuts.

Sobald die Option aktiviert ist, erscheint jedes Mal ein grauer Balken am unteren Ende des Bildschirms, wenn man durch tippen ein Texteingabefeld aktiviert. Und dieser Balken besitzt ganz rechts das gesuchte Pfeil nach unten-Symbol. Tippt man dieses Symbol an, erscheint die Software Tastatur auf dem Bildschirm:

image-8675

Tags: , , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Samstag, 9. November 2019

sed unter macOS an Hand von duplicity

Momentan gleise ich gerade die Migration von tarsnap mit Amazon S3 zu duplicity mit Backblaze B2 auf. Hauptgrund: Die verhältnismässig hohen Kosten.

Da MacPorts nur die veraltete duplicity-Version 0.7.17 liefert, welche mit folgender Fehlermeldung den Upload der Backup-Chunks verweigert …

Attempt 1 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 2 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 3 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 4 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
Giving up after 5 attempts. AttributeError: B2ProgressListener instance has no attribute '__exit__'

… habe ich mir ein Script geschrieben, welches Version 0.7.19 herunterlädt, kompiliert und in meinem Heimverzeichnis installiert.

Diese Version wiederum hat aber leider das Problem, dass die shebang-Zeile in ~/Library/Python/2.7/bin/duplicity folgendermassen lautet:

#!/usr/bin/env python2
...

Meine MacPorts-Installation kennt kein Executable mit dem Namen python2 und duplicity stirbt deshalb mit folgender Fehlermeldung:

env: python2: No such file or directory

Mein Installationsscript passt das duplicity-Script nun mit sed, dem Stream Editor, an. Da mit macOS das BSD sed mitkommt und nicht das GNU sed, muss man für ein Inline-Replacement folgendermassen vorgehen, damit es klappt:

sed -i "" 's/env python2$/env python2.7/g' /Users/user/Library/Python/2.7/bin/duplicity

Die leeren Quotes nach -i müssen zwingend angegeben werden, ansonsten erscheint die nachfolgende Fehlermeldung (vgl. Sed: ’sed: 1: invalid command code R‘ on Mac OS X).

sed: 1: invalid command code m

Wer mehr über die Unterschiede in den verschiedenen seds erfahren will, liest sich folgenden Artikel durch BSD/macOS Sed vs. GNU Sed vs. the POSIX Sed specification.

Tags: , , , , , , , , ,
Labels: Apple, Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 22. September 2019

Mac-Laptop im Pool

Vor 30 Jahren kündigte Apple den ersten „tragbaren“ Macintosh an (das Gerät wog 7 Kilogramm). Dem us-amerikanischen Computer-Magazin MacUser kam darauf nichts besseres in den Sinn, als auf dem Titelbild des Magazins die Nutzung des Geräts … in einem Pool darzustellen:

MacUser Cover, Ausgabe vom November 1989

Quelle: THE MAC PORTABLE TURNS 30 sowie Mac Portable

Tags: , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 17. September 2019

iPhone 11 in einem Wort zusammengefasst

Als (ernsthafte) Hintergrundlektüre sei John Grubers Review des iPhone 11 und iPhone 11 Pro empfohlen:

Apple spent the vast majority of the stage time for the iPhone 11 and iPhone 11 Pro talking about their cameras. They spent no time — not a word — talking about phone calls. […] Driven by the iPhone, the word phone has simply taken on a new definition — a pocket-sized touchscreen personal computer with wireless networking and front- and rear-facing cameras capable of shooting photographs and video. Try convincing a six-year-old that a landline telephone is a “phone” — they won’t believe you.

Quelle: The iPhone 11 and iPhones 11 Pro

Tags: , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen