Archiv ‘Apple’

Samstag, 27. August 2016

Auf dem Laptop einen Web-Server aktivieren, um Dateien auf ein iPad und iPhone herunterzuladen

Update 2021: Unter Python 3 lässt sich der Server folgendermassen starten:

$ python3 -m http.server

Quelle: What is the Python 3 equivalent of “python -m SimpleHTTPServer”

In den Ferien stand ich vor dem Problem, eine ca. 50 MB grosse Datei (Teneriffa-Reiseführer von Lonely Planet) von meinem Laptop auf mein iPad und mein iPhone zu kopieren.

Ein Versand per E-Mail war aus zwei Gründen ausgeschlossen: Mein Mail-Server akzeptiert solch grosse Dateien gar nicht erst, und ausserdem verfügte unser AirBnB nur über ein popeliges ADSL-Modem mit Geschwindigkeiten um die Jahrhundertwende. Das Modem hätte mich dementsprechend zuerst mit einem extrem langen Upload zum Mail-Server und anschliessend mit einem extrem langen Download vom Mail-Server genervt. Zu guter Letzt unterstützt mein MacBook auch kein AirDrop, um Dateien per Bluetooth oder WLAN zwischen iOS und OS X-Geräten auszutauschen.

Was nun? Das standardmässige unter OS X installierte Python eilt einem zur Hilfe: Man öffnet das Terminal, navigiert zum Verzeichnis, in welcher sich die gewünschte Datei befindet, und gibt dann folgenden Befehl ein:

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Nachdem man mittels ifconfig oder dem Network-Modul unter System Preferences die IP-Adresse des Laptops ausfindig gemacht hat, surft man auf den iOS-Geräten die folgende URL mit Safari an:

http://10.1.2.3:8000/

Ein Klick auf den Dokumentenlink, und innert weniger Sekunden wird das grosse PDF angezeigt und kann in iBooks gespeichert werden.

Python meldet auf der Kommandozeile dabei Folgendes:

10.25.9.220 - - [04/Jul/2016 10:14:18] "GET / HTTP/1.1" 200 -
10.25.9.220 - - [04/Jul/2016 10:14:20] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -
10.25.9.208 - - [04/Jul/2016 10:15:12] "GET / HTTP/1.1" 200 -
10.25.9.208 - - [04/Jul/2016 10:15:18] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -
10.25.9.235 - - [04/Jul/2016 10:15:57] "GET / HTTP/1.1" 200 -
10.25.9.235 - - [04/Jul/2016 10:16:03] "GET /canary-islands-6-whole-book.pdf HTTP/1.1" 200 -

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

Keine Kommentare | neuen Kommentar verfassen

Freitag, 12. August 2016

Nicht alle Google-Kalender werden in Calendar.app auf iOS angezeigt

In solchen Fällen lohnt es sich, mit dem Browser als erstes folgende URL aufzurufen:

calendar.google.com/calendar/iphoneselect

Dort überprüft man, ob man den gewünschten Kalender tatsächlich zur Synchronisation mit iOS-Geräten (iPhone oder iPad) ausgewählt hat.

Quelle: HOW TO SYNC MULTIPLE GOOGLE CALENDARS TO YOUR IPHONE OR IPAD

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

12 Kommentare | neuen Kommentar verfassen

Montag, 1. August 2016

Automatische Alarmierung bei Verkaufsstart eines Apple-Geräts

Als Apple im Frühjahr 2016 das iPhone SE vorstellte, war für mich klar, dass ich mich (endlich) so rasch als möglich von meinem in die Jahre gekommenen iPhone 5s trennen würde.

Das Datum des Verkaufsstarts in der Schweiz war bald nach Apples Ankündigung bekannt (der 29. März 2016), doch wann genau das Gerät über den Apple Online Store bestellbar sein sollte war mir nicht klar (mittlerweile weiss ich es: 9 Uhr morgens, Schweizer Zeit).

Kurzerhand richtete ich mir am Tag vor dem angekündigten Verkaufsstart deshalb auf Pingdom einen Check auf die Produkteseite im Apple Store ein. Pingdom ist ein Dienst, der die Verfügbarkeit einer Web-Site alle 5 Minuten prüft und verfügt als „Bonus“ die Möglichkeit, nach einem String in der HTML-Antwort des Web-Servers zu suchen.

Im vorliegenden Fall machte ich mir die Möglichkeit eines „Transaction Checks“ zu Nutze, mit welchem man konkret definieren kann, welches DOM-Element welchen Text beinhalten sollte.

Ich erfasste die Parameter und konfigurierte, dass mich Pingdom alarmieren sollte, wenn der Text

Derzeit nicht verfügbar

nicht mehr auf der Seite iPhone SE 64 GB Silber angezeigt würde (was ich als Indiz wertete, dass die Bestellfunktion nun aktiviert war).

Der Check sah in der Pingdom-Oberfläche folgendermassen aus:

Pingdom Apple iPhone SE

Als DOM-Element machte ich li.as-purchaseinfo-dudeinfo-deliverymsg aus.

Fertig! Und tatsächlich, kurz nach 9 Uhr morgens am 30. März 2016 erhielt ich den Alarm direkt auf mein Smartphone.

Tags: , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Freitag, 24. Juni 2016

„Find My Friends is only available on iOS“

Seit einigen Tagen — ich vermute seit der WWDC-Keynote und somit dem Entscheid Apples, Standard-Applikationen auf iOS deinstallierbar zu machen — zeigt mir iTunes 12.4 beim Aktualisieren folgende nervige Fehlermeldung an:

Find My Friends is only available on iOS

Schlau werde ich daraus aber leider nicht …

Tags: ,
Labels: Apple

1 Kommentar | neuen Kommentar verfassen

Dienstag, 14. Juni 2016

Das Apple Extended Keyboard II fachmännisch reinigen

Am 1. Juni fasste ich den Entschluss, mein Apple Extended Keyboard II (der Nachfolger des ebenfalls legendären Apple Extended Keyboards) blitzblank zu reinigen.

Ich hatte die unter Geeks so geschätzte Tastatur (Stichwort: Alps-Switches) bei einem früheren Arbeitgeber aus dem Elektronikschrott gefischt und setze sie dank einem iMate ADB-zu-USB-Adapter seit jeher an meinem Mac mini ein.

Obwohl ich fast täglich mit der Tastatur in Berührung komme, hatte ich es seit jeher unterlassen, die Tastatur einer gründlichen Tiefenreinigung zu unterziehen. Ich befürchte, dass die Tastatur seit ihrer „Geburt“ nie gereinigt worden war.

Nachdem ich mich im Netz über Möglichkeiten kundig gemacht hatte, wie man die Tastatur auseinandernimmt und reinigt, schritt ich zur Tat.

Zuerst löste ich die einzige Schraube (Kreuzschlitz), die den Oberteil der Tastatur auf dem Chassis hält (hinten am Keyboard). Anschliessend konnte ich mit ein wenig rütteln das Tastaturcover entfernen.

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Rasch merkte ich, dass man die Tasten mit den blossen Fingern von den Alps-Switches losreissen konnte. Das hätte ich aber lieber nicht zu lange gemacht, denn die Fingerkuppen fingen schon bald an zu schmerzen.

Ich wich nun auf die iFixIt Plastic Opening Tools aus. Ein Plasticwerkzeug genügte, mit welchem ich die Tasten vom Switch loshebelte. Aber Achtung: Einige flogen quer durch das Wohnzimmer.

Längere Tasten sind mit einem Metalbügel am Board befestigt. Diese Bügel entfernte ich ebenfalls vom Board und legte sie an sicherer Stelle zur Seite. Bei der Schweizer Tastatur gibt es mindestens zwei Bügellängen, die fast genau gleich lang sind, aber eben nur fast.

Hier ein Beispiel eines solchen Bügels:

Apple Extended Keyboard II Disassembly

Nachdem ich die Tasten alle entfernt hatte, legte ich diese zusammen mit dem Cover in den Geschirrbehälter meines Geschirrspülers. Ich starte den Geschirrspüler im Standardmodus — aber ohne Seifen-Tab. 60 Grad Celsius heisses Wasser sowie das standardmässig im Geschirrspüler abgefüllte Salz und Glanzreiniger mussten nun während ca. zwei Stunden die Plasticteile reinigen. Die Reinigung klappte wunderprächtig!

Unterdessen nahm ich den Staubsauber hervor und reinigte den Bereich zwischen den Tasten und dem schwarzen Board. Sensible Seelen sollten die folgenden Fotos nicht allzu genau anschauen; es fanden sich tonnenweise Haare, aber auch Brotkrümel und sonstige Essensreste:

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Die gröbsten Dreckablagerungen konnte ich mit dem Staubsauger und einer dünnen Düse entfernen. Für die Tiefenreinigung folgte ich dann der Blitzidee meiner Frau, ein Zahnbürstchen zu verwenden. Was für Zähne und Zahnzwischenräume gut genug ist, passt auch für ein AEKII perfekt. Als Reinigungslösung verwendete ich Screen-Cleene von Automation Facilities (SCS250):

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

In der Zwischenzeit hatte der Geschirrspüler sein Waschprogramm beendet. Ich nahm die Tasten aus dem Geschirrbehälter und breitete sie auf eine Abtrocktuch aus. Sehr rasch entschied ich mich dann aber dafür, dem ganzen künstlich nachzuhelfen, schmiss die Tasten in eine Plasticbox und richtete im Badezimmer den Föhn auf die Oberflächen (und zerstörte dabei offenbar den Föhn der besseren Hälfte).

Als die Tasten fühlbar trocken waren, ging es dann auch bereits los: Nun musste ich diese in mühsamer Handarbeit wieder an den Alps-Switches anbringen. Glücklicherweise können die Tasten einfach auf die Switches gesteckt werden. Etwas komplizierter sind die Tasten mit Metallbügel, aber auch das kriegt man mit ein wenig Übung, Fingerspitzengefühl und einer Pinzette hin.

Eine Schrecksekunde gab es, als alle Tasten an ihrem Platz waren — ausser das verfluchte „X“. Nach einer fünfminütigen Suchaktion fand ich es dann im Abflussgitter des Geschirrspülers. Ich empfehle deshalb wärmstens, die Tasten in einem Textilsäckchen zu waschen, welches man von Waschmaschinen her kennt.

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Das Schlussresultat lässt sich durchaus sehen:

Apple Extended Keyboard II Disassembly

Apple Extended Keyboard II Disassembly

Fazit: Auf die nächsten 20 Jahre! Ich würde es sofort wieder machen.

Links

Hilfreich waren folgende Artikel:

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

2 Kommentare | neuen Kommentar verfassen

Sonntag, 22. Mai 2016

Passbook Pass zu gross

Ticketino Passbook Pass Too Large

Liebe Entwickler von Ticketino, es wäre hilfreich, wenn ihr Apples Entwicklerdokumentation zu den Passbook Passes lesen, verstehen und umsetzen könntet …

Ticketino Passbook Pass 17MB zensiert

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

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 22. Mai 2016

Wo speichert Apple iCloud-Daten?

In der Branche ein offenes Geheimnis:

iCloud Photos googleapis

Derzeit greift Apple auf einen Mix von Amazon, Microsoft Azure sowie Googles Cloud zurück, um seine Internet-Dienste zur Verfügung zu stellen. Obiger Screenshot einer Meldung der Firewall Little Snitch belegt dies.

Tags: , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Montag, 16. Mai 2016

iPad Pro 9.7″ stirbt mit Error 56 (Update)

Ein Kollege hat sich kürzlich ein iPad Pro 9.7″ gekauft. Das Gerät ist nach einigen Wochen Benutzung abgestürzt, was ihn zu einem Restore gezwungen hat. Leider schlägt diese Prozedur reproduzierbar fehl: iTunes meldet „Error 56“ und der Restore bleibt hängen.

Wer nach „error 56“ „ipad pro“ googlet, findet sowohl auf Twitter als auch auf Web-Sites wie Apple Discussions Hinweise, dass mein Kollege nicht der erste Käufer ist, der sich mit diesem unlösbaren Problem herumplagen muss.

Ich erwarte, dass Apple in den nächsten Tagen (oder Wochen) das Problem offiziell anerkennt. Entweder es lässt sich mit einem Software-Update lösen, oder aber wir haben es hier mit einer fehlerhaften Produktionsserie zu tun (Hardware-Problem).

Nachtrag

Am 20. Mai 2016 war es soweit: Apple comments on ‚Error 56‘, fix on the way for affected iPads.

Wer ein GA besitzt oder in Zürich respektive Basel respektive Genf und Umgebung wohnt vereinbart am einfachsten einen Termin im Apple Store und lässt sich sein gebricktes iPad Pro wie Jean-Claude Frick umtauschen.

Tags: ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 17. April 2016

Photos in einem iPhoto Smart Album löschen

So simpel, wenn man den Trick kennt:

If I then click on the Photos menu and hold down the Option key I can choose to move any selected images to the trash.

Quelle: Tips for locating (and deleting) iPhoto images

Auf Deutsch: Ich wähle alle Photos eines Smart Albums aus, welche ich gelöscht haben möchte (sie sind dann gelb umrandet). Anschliessend drücke ich die Option-Tast (⌘) und klicke — während ich die Taste gedrückt halte — auf den Menupunkt „Photos“. Das vorher ausgegraute „Move to Trash“ ist nun wählbar. Je nach Zahl der ausgewählten Photos dauert der Löschprozess eine Weile.

Ich habe diese Funktionalität genutzt, um alle Screenshots von iOS-Geräten in meiner iPhoto Library zu löschen (nachdem ich diese in einen Ordner im Dateisystem kopiert habe — dort machen die Screenshots mehr Sinn).

Hierzu habe ich ein Smart Album erstellt, welches Photos findet, die die Dateiendung PNG tragen:

iPhoto Smart Album PNG iOS Screenshots

Tags: , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Samstag, 2. April 2016

monit mit MacPorts unter OS X El Capitan installieren (mit angeblich fehlenden OpenSSL-Headern)

Vor einigen Tagen habe ich mich entschieden, mein MacBook Air (Late 2010) komplett platt zu machen und OS X El Capitan darauf zu installieren.

Nach der Neuinstallation musste ich auch alle meine MacPorts-Packages neu installieren. Leider gab es Probleme bei der Installation des Pakets monit:

$ sudo port install monit
Password:
---> Computing dependencies for monit
---> Configuring monit
Error: Failed to configure monit, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/work/monit-5.12.1/config.log
Error: org.macports.configure for port monit returned: configure failure: command execution failed
Please see the log file for port monit for details:
   /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/main.log
To report a bug, follow the instructions in the guide:
   http://guide.macports.org/#project.tickets
Error: Processing of port monit failed

Ein Blick in /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/main.log zeigte folgende detailliertere Fehlermeldung:

...
:info:configure checking for static SSL support... disabled
:info:configure checking for SSL support... enabled
:info:configure checking for SSL include directory... Not found
:info:configure 
:info:configure Couldn't find your SSL header files.
:info:configure Use --with-ssl-incl-dir option to fix this problem or disable
:info:configure the SSL support with --without-ssl
:info:configure 
:info:configure Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/work/monit-5.12.1" && ./configure --prefix=/opt/local 
:info:configure Exit code: 1
:error:configure Failed to configure monit, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/work/monit-5.12.1/config.log
:error:configure org.macports.configure for port monit returned: configure failure: command execution failed
:debug:configure Error code: NONE
:debug:configure Backtrace: configure failure: command execution failed
   while executing
"portconfigure::configure_main org.macports.configure"
   ("eval" body line 1)
   invoked from within
"eval $procedure $targetname"
:info:configure Warning: targets not executed for monit: org.macports.activate org.macports.configure org.macports.build org.macports.destroot org.macports.install
:notice:configure Please see the log file for port monit for details:
   /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_monit/monit/main.log

Der relevante Teil des Logs:

...
:info:configure Couldn't find your SSL header files.
:info:configure Use --with-ssl-incl-dir option to fix this problem or disable
:info:configure the SSL support with --without-ssl
...

MacPorts openssl war aber installiert und die Header-Files fanden sich im Pfad /opt/local/include/openssl. Den Pfad hatte ich mit einer Suche nach ssl.h ausgemacht.

Nach mehr als einer Stunde Google-Suche war ich immer noch nicht weiter. Da kam mir der Geistesblitz: Das configure-Script von monit wird die SSL-Headers wohl im Standardverzeichnis suchen. Offenbar gibt es dieses Verzeichnis nicht, weshalb die Installation scheitert … wenn ich aber herausfinde, wie das Standardverzeichnis lautet, kann ich dieses mit einem Symlink auf das MacPorts-Verzeichnis umbiegen und die Installation sollte durchlaufen.

Gesagt, getan. Als erstes startete ich in einem Terminal-Fenster die Installation von monit:

$ sudo port install monit

In einem zweiten Tab führte ich dann folgenden Befehl aus, um alle Zugriffe auf das Dateisystem zu loggen:

$ sudo fs_usage

Nachdem das Tab mit dem MacPorts-Befehl wieder „bash“ als Titel anzeigte, stoppte ich fs_usage mit Ctrl-C. Anschliessend kopierte ich den ganzen Text in eine Textdatei, speicherte diese auf dem Desktop ab und begann, den Text zu greppen.

Ganz am Schluss der Aktivitäten kam heraus:

...
18:17:53  stat64            /usr/include/sys/_pthread/_pthread_key_t.h                                 0.000008   clang       
18:17:53  stat64            /usr/include/sys/_types/_fsblkcnt_t.h                                      0.000008   clang       
18:17:53  stat64            /usr/include/sys/_types/_fsfilcnt_t.h                                      0.000008   clang       
18:17:53  stat64            /opt/local/include                                                         0.000013   clang       
18:17:53  stat64            /usr/local/include                                                         0.000005   clang       
18:17:53  stat64            /usr/local/include                                                         0.000004   clang       
18:17:53  stat64            /Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/include    0.000013   clang       
18:17:53  stat64            .app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include    0.000007   clang       
18:17:53  stat64            /usr/include                                                               0.000005   clang

/usr/local/include tönte vielversprechend nach einem Standardpfad … und Bingo:

$ cd /usr/local/include
-bash: /usr/local/include: No such file or directory

Tönt wie ein Volltreffer. Dann versuchen wir es doch einmal damit:

$ sudo mkdir /usr/local/include
$ cd /usr/local/include
$ sudo ln -s /opt/local/include/openssl .

Alles bereit für den Versuch? Dann los — et voilà:

$ sudo port install monit
--->  Computing dependencies for monit
--->  Configuring monit
--->  Building monit
--->  Staging monit into destroot
--->  Creating launchd control script
###########################################################
# A startup item has been generated that will aid in
# starting monit with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo port load monit
###########################################################
--->  Installing monit @5.12.1_1
--->  Activating monit @5.12.1_1
--->  Cleaning monit
--->  Updating database of binaries
--->  Scanning binaries for linking errors
--->  No broken files found.

Die Jungs von homebrew haben die Problematik übrigens direkt im config-File gefixt, und zwar mit dem Parameter --with-ssl-dir, welches auf den openssl-Pfad zeigt:

...
def install
    system "./configure", "--prefix=#{prefix}",
                          "--localstatedir=#{var}/monit",
                          "--sysconfdir=#{etc}/monit",
                          "--with-ssl-dir=#{Formula["openssl"].opt_prefix}"
    system "make", "install"
    (share/"monit").install "monitrc"
...

Quelle: homebrew/monit.rb at master

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

Keine Kommentare | neuen Kommentar verfassen