Mac OS X und iPhone/iPod/iPad

Nutzen des Autolayout auf OS X


Da ich jetzt mal Zeit habe, möchte ich sie nutzen um meine Kenntnisse in Cocoa, Swift und Xcode auf den neuesten Stand zu bringen. 


Viele der neuen Möglichkeiten von Xcode, wie Storyboards und das von mir jetzt angesprochene Autolayout kommen von iOS und sind erst spät auf für OS X möglich geworden, beispielsweise die Storyboards. Das Autolayout ist ab OS X 10.7 möglich. 


Was ist nun das Autolayout? Die Grafische Oberfläche unter iOS und OS X basiert auf Views. Bzw. auf einer Hierarchie von Views. Nun verändert sich ja auch die Ansicht, wenn man ein Fenster vergrößert, bzw. verkleinert. Oder bei iOS, ob man die Anwendung auf einem iPhone 5 oder einem 6 Plus, bzw. iPad nutzt. Und dann noch hochkant oder quer. Klassisch musste man jedem Element der Benutzeroberfläche sagen, was es machen sollte. Auch gab und gibt es Container, wie die Box, um Elemente zusammenzufassen. 


In Qt ist das dann so gelöst, das es eigene Layoutelemente gibt, die einzelne Elemente in Beziehung zu einander setzen. Mit Autolayout ist das ähnlich. Mittels so genannter Constraints werden Elemente einer Benutzeroberfläche miteinander in Beziehung gesetzt.


Beispielsweise ein Tableview und Buttons zum Zufügen bzw. Entfernen. Wenn man das Fenster vergrößert soll sich der Tableview ausdehnen können, aber die Buttons nicht verdecken. Und die Buttons sollen den gleichen Abstand voneinander haben. 


Mittels Constraints setzt man zum Beispiel die Tableview mit dem Fenster in Beziehung, damit diese sich entsprechend der Größe anpasst. Und dann die Buttons mit dem Tableview, so dass sie immer angezeigt werden, d. h. das die Tableview die Buttons nicht überdeckt. 


Am einfachsten ist es, erst die UI zu gestalten und danach alles zu markieren und im Menü „Editor“  den Punkt „Resolve Autolayout Issues“, und schließlich den Punkt „Add missing Constraints“ anzuklicken. Dann sind die notwendigen Constraints erstellt und man kann dazu übergehen, eventuelle Fehler zu beseitigen. Also das Programm laufen lassen und die Fenstergröße ändern. Bzw. die iOS-App in verschiedenen Simulatoren öffnen, und auch mal die Ausrichtung ändern. 



Arbeiten mit Storyboards

 

Seit iOS 5 bzw. Xcode 4 gibt es die so genannten Storyboards. Mit Xcode 6.1 gibt es diese jetzt auch für Mac OS X. Für mich also eine Gelegenheit, mich damit zu beschäftigen.


Was sind Storyboards? Sie sind eine Erweiterung des Interface Builders. Im Prinzip steuern Storyboards den Übergang zwischen mehreren Viewcontrollern. Da man bislang auf dem iPhone meist eine Liste und zu jedem Eintrag eine Detailansicht hat, wurde ein Übergang vor den Storyboards meist programmatisch erzeugt. Das heißt, die Verknüpfung mehrerer .NIB bzw. .XIB-Dateien musste aus dem Code erzeugt werden. D.h. die Interface Builder Datei geladen und angezeigt, und ggfs. Daten an die zugehörige Klasse übergeben. 


Mit Storyboards ist das Thema jetzt einfacher, man hat nur noch eine Datei, in der alle Views eines Programms (ich weigere mich dass „App“ zu nennen) aufgelistet sind. 


Die Verwendung von Storyboards ist jetzt Pflicht für iOS, für Mac OS X ist es (noch) nicht. Mit Storyboards kann auch der Übergang von einem View in den nächsten visuell gestaltet werden. 


Zwei Begriffe, die man in den Storyboards lernen sollte: Scenes und Segues. Scenes ist die aktuelle Ansicht, während eine Segue einen Übergang von einer in eine andere Ansicht ist. 


Ich habe mal drei Projekte hochgeladen die Storyboards verwenden. Zwei iOS, Swift und Objective C, sowie Mac OS X.Zu finden im Downloadbereich.


Mein Fazit: So sinnvoll die Storyboards by iOS sind, so sehe ich nur wenig Sinn bei OS X. Das man beim iPhone halt bedingt durch die Bildschirmgröße sehr häufig wechselnde Ansichten hat, spielt sich die Aktion bei OS X meist in einem großen Fenster ab. Aber das ist halt Geschmacksache, ich denke, langfristig wird es mehr Möglichkeiten geben. 


Full Screen

 

Mit dem Löwen, also OSX 10.7 aka Lion, hat Apple den Fullscreen Modus eingeführt. Die großen Programmpakete, von iTunes bis Pages, selbst Skype unterstützen diesen Modus.

 

Im Gegensatz zur Fenstermaximierung, die ja traditionell bei Apple schon immer anders funktioniert hat, legt sich das Fenster nicht über alle vorhandenen Fenster und den Desktop sondern eröffnet einen neuen virtuellen Bildschirm (Space) und vergrößert das Fenster, blendet die Titelleiste und die Fensterknöpfe aus und auch die Menüleiste. Im Mission Control erscheint es dann wie ein weiterer Space.

 

Vorteil für den Benutzer: Er kann sich voll auf das Programm konzentrieren dabei bekommt er aber immer noch die Mitteilungen der Mitteilungszentrale mit.

 

Und für den Programmierer ist es einfach zu implementieren, wie Cocoa-typisch.

 

 

1.) Man stellt das die Eigenschaft „Full Screen“ für das Fenster auf „Primary Window“ — was normalerweise das Fenster ist, welches der Benutzer bereits sieht. Der Fensterknopf für den Full Screen Modus erscheint bereits.

2.) Alle Elemente der Benutzeroberfläche sollten schon soweit angepasst sein, das ein Vergrößern und Verkleinern das Layout nicht zerstört.

 

That’s it.

 

Die Einstellung „Secondary Window“ wird benötigt um im Vollbildmodus ein anderes Bild anzuzeigen, siehe da zum Beispiel iPhoto.

 


Lokalisierung mit Xcode 3.1

 

Gerade im Zuge zunehmender Globalisierung vor allem auch im Bereich der Software (keine andere Ware kann so schnell Grenzen überschreiten) ist es wichtig, von vorne herein auf eine mögliche Lokalisierung hin zu arbeiten.


Ist es Weihnachten

 

Was kann es:

Ein kleines Progrämmchen, das nichts macht, ausser anzuzeigen, ob heute Weihnachten ist oder nicht.

 

Auch wenn es der größte Schwachsinn zu sein scheint, habe ich aber auch etwas für die Cocoa-Neulinge und Trickser eingebaut:

  1. Lokalisierung: Wie lokalisiere ich richtig?
  2. Wie beende ich eine Anwendung, sobald das letzte (in diesem Falle einzige) Fenster geschlossen wird?

Zum 1. Punkt: die Lokalisierung setzt an zwei Punkten an: der NIB (XIB ab 10.5) Datei und den Strings im Quellcode. Die NIB/XIB-Datei lokalisieren Sie, indem Sie zuerst alles so einrichten, wie Sie es benötigen. Sie erstellen das Fenster, die Menüs, die Dialoge, die Views usw. in einer Sprache (meist Englisch). Die Lokalisierung erfolgt ganz am Schluss, um unnötige Arbeit zu vermeiden.

 

Dann erzeugen Sie eine neue Sprachdatei, indem Sie in Xcode die Datei in den Ressourcen anklicken und das Info-Fenster aufrufen. Da finden Sie im Ersten Reiter den Punkt "Add Localization". Dort klicken Sie drauf und wählen im Popup-Menü den Eintrag z. B. "German" für die deutsche Sprache (Dort könnten Sie auch eine andere Sprache frei eingeben, mit der internationalen ID, die sie hier http://www.loc.gov/standards/iso639-2/php/English_list.php finden).

Für China gibt es zwei Einträge, einmal die Traditionelle Schreibweise, die vor allem in Hongkong und Taiwan sowie Macao verwendet wird, und die vereinfachte Schreibung, die im Festland China verwendet wird. Die Bezeichnung zh-Hans für die vereinfachte Schreibung, und die Bezeichnung zh-Hant wird bei Mac OS 10.4 und höher verwendet)

Strings im Quelltext selbst können Sie über das Makro NSLocalizedString(@"Schluessel", @"Kommentar") ersetzen lassen. Über all dort, wo Sie einen festen String verwenden geben Sie dieses Präprozessor-Makro ein. Sie erzeugen über "File->New File..." im Bereich "Others" eine neue Strings-Datei und nennen Sie "Localizable.strings". Diese machen Sie über den Inspektor in Xcode lokalisierbar und schreiben dann Ihre Schlüssel und die Strings der 1. Sprache dort hinein in der Form:

 

"Schluessel" = "String";

 

Dann erzeugen Sie, wie bei der Nib/XIB-Datei eine neue Lokalisation und passen diese der Sprache gemäß an. Fertig.

 

Zum Punkt 2: Wer von anderen Systemen, ob nun Windows oder Linux oder OS/2 kommt, der kennt es kaum anders: Sobald das letzte Fenster geschlossen wird, ist das Programm beendet. Bei Anwendungen, die mehrere Dokumentenfenster offenhalten, ist das nicht gut, aber bei Anwendungen, die nur ein einziges Fenster aufhaben und auch sonst nur ein paar Dialogfenster oder Sheets öffnen, bringt es dem Benutzer schon ein bisschen Erleichterung (und nur darum geht es). Das ist auch nicht ganz schwierig zu erreichen, die Dokumentation hilft da auch nur ein wenig weiter.

Um dieses bisschen Komfort zu ermöglichen öffnen Sie (bevor Sie die Lokalisierung gemacht haben) die NIB/XIB-Datei. Dann verbinden Sie das "Application"-Outlet delegate mit Ihrem Controller und schreiben in die zugehörige Klassendatei folgende Delegate-Methode:

 

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
return YES;
}

 

Sobald das letzte Fenster geschlossen wurde, wird diese Nachricht gesendet und da immer "YES" zurückgegeben wird, wird die Anwendung geschlossen, zuvor wird -- sollten Sie diese implementiert haben -- die Delegate-Methode applicationWillTerminate aufgerufen. Dort können Sie zum Beispiel die Daten noch speichern, bevor die Anwendung geschlossen wird. Da wir hier aber nichts speichern, habe ich sie nicht implementiert.

 

Frohe Weihnachten und viel Spaß damit. Bevor Sie aber jetzt Ihre Familie vernachlässigen, weil Sie in alle Ihre bereits geschriebenen Programme diese Dinge einbauen: Schalten Sie die Kiste ab und geniessen Sie die Feiertage.


NSCalendar, NSDate, NSDateComponents

Für kaufmännische/wirtschaftliche und verwaltende Anwendungen muss man oft mit Datum und Uhrzeit rechnen. Lieferfristen, Zahlungsfristen, Lagerfristen etc.

Neben der sehr rudimentären Klasse NSDate bietet Cocoa sehr komfortable Klassen an um mit Datum und Uhrzeit zu rechnen. Um mit Fristen zu rechnen, bringe ich hier mal die gängigsten Beispiele an.

Hier ist nun das Tutorial für Leopard und folgende Systeme.

Zur Einführung eine kleine Vorstellung der beteiligten Klassen:

NSCalendar: Repräsentiert einen Kalender, der lokalisiert und angepasst werden kann. So kann neben dem westlichen Gregorianischen Kalender auch ein Buddhistischer, zwei verschiedene islamische und auch hebräische und japanische Kalender erzeugt werden. Ein chinesischer Kalender steht zwar schon jetzt zur Verfügung, kann aber derzeit noch nicht eingesetzt werden. Es ist aber abzusehen, das in den nächsten Versionen von Mac OS X auch ein chinesischer Kalender zur Verfügung steht. Der Vorteil dieser Klasse ist, das Umrechnungen entfallen, bzw. einfach möglich werden. Sie finden bereits jetzt in den Systemeinstellungen im Teil "Landeseinstellungen" im Bereich "Formate" die Möglichkeiten den Systemkalender umzustellen.

NSDate: Repräsentiert ein einfaches Datum und Uhrzeit.

NSDateComponents: Repräsentiert die einzelnen Bestandteile eines NSDate-Datums, wie Tag, Monat, Jahr, Stunde, Minute etc.

Beispiel 1: Zahlungsziel

Aufgabe: Das Rechnungsdatum einer Rechnung ist das heutige Systemdatum. Das Zahlungsziel beträgt 30 Tage. Das Zahlungsziel soll bestimmt werden.

Ansatz: Zuerst holen wir uns das aktuelle Datum, indem wir eine neue Instanz der Klasse NSDate erzeugen, danach erzeugen wir uns den aktuellen Systemkalender, den der Nutzer eingestellt hat. Danach rechnen wir mit den Funktionen des Kalenders.

NSDate  * rechnungsdatum = [[NSDate alloc] init];
NSCalendar * gregorian = [NSCalendar currentCalendar];

Danach legen wir ein neues DateComponents-Objekt mit 30 Tagen an.

NSDateComponents * comps = [[NSDateComponents alloc] init];
[comps setDay:30];

und nun führen wir die Berechnung aus:

NSDate faelligkeitsdatum = [gregorian dateByAddingComponents:comps toDate: rechnungsdatum options: 0];

Fertig.

Beispiel 2: Erster Tag des Laufenden Monats feststellen

Das ist schon ein wenig komplizierter, aber nicht so kompliziert, wie es scheint.

NSDateComponents erlaubt uns, alle Teile eines Datums einzeln zu setzen. Also holen wir uns die Datumskomponenten aus dem aktuellen Datum:

NSDateComponents* comps = [gregorian components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datum];

Nun setzen wir noch den Tag und Uhrzeit passend:

[comps setDay:1];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];

Damit erzeugen wir dann unseren Monatsanfang:

NSDate monatsAnfang = [gregorian dateFromComponents:comps];

Fertig. Natürlich, wenn es notwendig ist, können Sie auch die aktuelle Uhrzeit in die NSDateComponents holen, und diese dann nutzen. Das neue NSDate-Objekt hat dann die gleiche Zeit, wie das Ursprungsdatum.

Beispiel 3: Ersten Tag des Folgemonats ermitteln

Diese Aufgabe ist ein wenig komplizierter, auch das ganze in wenigen Quellcodezeilen zu lösen. Ich mache dies hier Schritt für Schritt, zum nachvollziehen. Zuerst ermitteln wir wie gehabt den aktuellen Monatsanfang (siehe Beispiel 2).

Danach erzeugen wir uns neue Datums-Komponenten, in denen wir den Monat auf 1 setzen:

NSDateComponents * comps = [[NSDateComponents alloc]init];
[comps setMonth:1];

NSCalendarDate folgemonat = [gregorian dateByAddingComponents:comps toDate:monatsAnfang options:0]

Fertig.

Beispiel 4: Letzter Tag des Vormonats

Auch das ist ein Klassiker der kaufmännischen Softwareentwicklung. Wieder holen wir uns ein aktuelles Datum:

NSDate aktuellesDatum = [[NSDate alloc] init];

nun ermitteln wir, welchen Tag wir haben, nehmen dieses * -1 und erzeugen mit der o.a. Funktion ein neues Datumsobjekt:

NSDateComponents * comps = [gregorian components:NSDayCalendarUnit fromDate:datum];
int d = [comps day] *-1;
[comps setDay:d];
NSDate * vormonat = [gregorian dateByAddingComponents:comps toDate:datum options:0];

Fertig, beachten Sie hier, das ich diesmal eine Hilfsvariable verwendet habe.

Beispiel 5: Nun ermitteln wir den letzten Tag des aktuellen Monats

Dabei ist es wichtig das wir nicht wissen, ob es bei diesem Monat 28, 29, 30 oder 31 Tage gibt.

Hier ermitteln wir wieder den Monatsanfang, wie in Beispiel 2.

In einem Schritt addieren wir nun einen Monat, und subtrahieren einen Tag.

NSDateComponents * comps = [[NSDateComponents alloc ] init];
[comps setDay:-1];
[comps setMonth:1];
NSDate * letzterTagDiesenMonat =  [gregorian dateByAddingComponents:comps toDate:monatsAnfang options:0];

Fertig. Sie sehen, mit Datum arbeiten ist gar nicht so kompliziert.

Beispiel 6: Nun wollen wir den aktuellen Tag im Jahr feststellen, und ausrechnen, wie viele Tage noch verbleiben. Dazu müssen wir erst einmal berechnen, wie viele Tage vergangen sind.

Dazu erzeugen wir ein neues Datum mit dem 01.01. Das können wir erreichen, indem wir wir ein NSDateComponents nur mit dem entsprechenden Jahr erzeugen, und aus diesen dann ein neues Datum erzeugen:

NSDate * heute = [[NSDate alloc]init];
NSDateComponents * comps = [components: NSYearCalendarUnit fromDate:heute];
NSDate neujahr = [gregorian dateFromComponents:comps];

Nun nutzen wir das Components-Objekt weiter (das geht bei Cocoa sehr schön, in C++ oder anderen Sprachen ist das nicht so einfach möglich):

comps = [gregorian  components:NSDayCalendarUnit fromDate:neujahr toDate:heute options:0];

int tageVergangen = [comps day];

Nun erzeugen wir ein neues Datum mit dem 31.12. des aktuellen Jahres:

NSDateComponents * comps = [gregorian components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datum];
[comps setDay:31];
[comps setMonths:12];
NSDate silvester = [gregorian dateFromComponents:comps];

Nun können wir, wie oben schon beschrieben, die Tage zwischen heute und dem 31.12. ermitteln:

comps = [gregorian components:NSDayCalendarUnit fromDate:heute toDate:silvester options:0];

tageVerbleibend = [comps day];

Beispiel 7: Bestimmung des Alters (Jahre und Tage) einer Person

Dies ist sehr einfach durchzuführen.

Wir brauchen das Geburtsdatum und das heutige Datum:

(gegeben das Geburtsdatum im NSDate-Objekt birthday, das heutige Datum im NSDate-Objekt heute). Meist nutzen Sie, um Datums-Objekte von Ihrer Benutzeroberfläche nutzen wollen einen NSDatePicker. Im Beispiel können Sie das sehen.

Wir können das Alter sekundengenau berechnen lassen, beschränken uns hier aber auf die Jahre und Monate.

NSDateComponents * comps = [gregorian components:NSMonthCalendarUnit|NSYearCalendarUnit fromDate:birthday toDate:heute options:0];

Nun können Sie die Jahre und Monate abfragen:
int jahre = [comps year];
int monate = [comps month];

Fertig.

Dies war mein kleiner Kurs zum Thema Datumsberechnung mit NSCalendar, NSDate und NSDateComponents. Sie können die Beispiele nun auch auf Zeitberechnungen ausdehnen. Zum Experimentieren mit diesen Klassen eignet sich übrigens auch die Open-Source-Software F-Script

Die entsprechenden Beispiele habe ich nun ein wenig aufgeräumt, so ist das ganze Programm jetzt konform zum MVC-Paradigma (Model-View-Controller). Auch gibt es jetzt eine deutsche Lokalisierung der Software. Verwendet wurde wieder Xcode 3.1 und der neueste Interface-Builder.

Download
Code-Beispiel NSDateComponents, NSCalendar, NSDate
Hier ist das kleine Code-Beispiel.
DatumTestLeopard.zip
Komprimiertes Archiv im ZIP Format 63.1 KB

F-Script und Smalltalk

 

Vor kurzem habe ich einen Link zu der deutschen Ausgabe des E-Books "How to become a Xcoder" erhalten. Die Seite wurde vom Programmierer der "Objektorientierten Interpreter- und Skriptsprachenumgebung" F-Script, einem der Mitautoren des E-Books, erstellt.

 

Was ist F-Script? F-Script ist eine interaktive Ebene auf das Objektmodell von Cocoa. Ähnlich wie in Smalltalk (die Sprache von F-Script ist an Smalltalk angelegt) können Sie dynamisch Objekte anlegen, benutzen und anzeigen lassen. Mit einem Objekt-Browser kann jedes Objekt überprüft und angezeigt werden.

 

Gleichzeitig kann F-Script einfach in eigene Applikationen integriert werden. Einmal, indem man das Framework integriert und aus der Applikation heraus können damit Skripte in F-Script aufgerufen werden. Damit lassen sich Anwendungen entwickeln, die einfach skriptbar und erweiterbar sind.

 

Vorhandenen Cocoa-Anwendungen lässt sich mit dem beigelegten Programm "F-Script Anywhere" die Fähigkeit zum Skripten "injizieren", und somit können Sie auch interaktiv fast jede Anwendung erweitern, wenn sie in Cocoa geschrieben ist. 

 

F-Script findet man als Open Source-Software hier. Wer sich auch für Smalltalk interessiert, das den Vorläufer für alle heutigen objektorientierten Sprachen darstellt, dem sei Squeak anempfohlen, eine Smalltalkumgebung, die dem ursprünglichen (übrigens vom Mac-Vorläufer Xerox angedachten) Ansatz, eine "Spielwiese" zum Lernen und Spielen zu haben entgegenkommt.


Der Schnee-Leopard

 

Nun ist es raus, die Gerüchte scheinen sich bestätigt zu haben. Mit "Snow Leopard" kommt 10.6 nur als reines Bugfix-Release heraus, und vermutlich soll wohl neben der PowerPC-Unterstützung auch die Unterstützung der Programmierschnittstelle Carbon, die vor allem für Umsteiger von Mac OS 9 gedacht war wegfallen. 

 

Nun, für mich als Cocoa-Crack ist das nichts bedeutendes, allerdings für die meisten kommerziellen Anwendungen, von Microsoft Office bis hin zu Quark und Adobes Produkten könnte dies das "Aus" bedeuten. 

 

Mal sehen, was davon sich bewahrheitet.


Test: Vodafone und die EasyBox

 

DSL in Deutschland ist - im Gegensatz zu China - noch nicht so verfügbar und so preiswert wie in der Volksrepublik. Auch wenn die Qualität der Leitung bescheiden ist, so ist es doch jederzeit und fast überall verfügbar und billig. In Deutschland muss man - nachdem man DSL beantragt hat - inzwischen seine komplette Leitung umstellen, hat dann zwar auch Flatrate beim Telefonieren, aber wer das nicht will, weil er/sie wenig telefoniert oder auch sonst Nachteile (zum Beispiel lassen sich Billigvorwahl-Nummern, wie die 01026 nicht nutzen) erleiden müsste, oder aber in seinem Gebiet noch kein DSL bekommen kann, muss eine andere Lösung annehmen. 

 

Internet über das Mobilfunknetz scheint da eine passable Lösung. The Phone-House bietet derzeit im Verbund mit dem Asus Eee-PC, und anderen Notebooks eine Lösung, über Vodafone und ein USB-Modem wird eine Verbindung über UTMS oder GPRS aufgebaut.

 

Das USB-Modem wird von der Firma Huawei hergestellt, die in Shenzhen, also bei mir gerade in der Nachbarschaft sitzt. Das ganze Paket ist Apple-typisch in weissem Kunststoff gehalten und sollte sich eigentlich auch auf dem Mac ganz einfach installieren und nutzen lassen.

 

Das Stichwort war: Sollte... Denn das Modem aus dem benachbarten Shenzhen  tat nicht, wollte auch die PIN nicht sehen. 

 

Also Austausch. Inzwischen habe ich ein funktionierendes Modem, aber ein anderes Problem. Die Verbindung in meiner Gegend sind alle nur GPRS-EDGE, also schneckenlahm und auch die in diversen Foren angesprochenen Verbindungsabbrüche kenne ich leider nur zur Genüge. Also Vodafone, nicht nur alte, funktionierende Röhrenwerke kaputtsparen sondern das UMTS-Netz gründlich ausbauen. 

 

Update: Die Verbindungsabbrüche werden nicht besser.

 

Update II: Auch mit Jimdo macht das Probleme, da JavaScript wohl komprimiert gesendet wird und dadurch keine Möglichkeit besteht, die vorhandenen Seiten zu editieren. Ausserdem hängt sich das Modem, Huawai EasyBox 220 gerne mal auf und mit der aktuellsten Software reisst es auch mal das gesamte System mit sich. Also: Ein teurer Spaß und nicht wirklich zu empfehlen.


Test: Sony Cybershot T300

 

Am Wochenende habe ich mir also eine neue Kamera gekauft. Die Sony Cybershot T300. Sehr neu, sehr kompakt und kann fast alles, ausser Kaffee kochen. 

 

Wie alle Kameras der T-Serie ist die T300 mit einem Schiebedeckel versehen und ist von der Bauweise sehr kompakt. Sie ist nicht größer als ein iPod mini. Da sie erst im April auf den Markt kam, gibt es noch nicht viele Testberichte, aber viele Vorschußlorbeeren. 

 

Die Kamera ist robust gebaut, gut verarbeitet und liegt gut in der Hand. Nachteil des großen Displays ist, das man sehr schnell Fingerabdrücke darauf hinterlässt. Und beim Fotografieren sehr schnell statt des Motivs die eigenen Finger ablichtet. Die Optik kommt von Carl Zeiss und ist - laut dem deutschen Handbuch auf der mitgelieferten CD - nach deutschen Qualitätsstandards hergestellt. Na, wenn das mal nichts ist. 

 

Praktischerweise kam meine gleich mit einem 2 GB Memorystick Duo und einem Etui, das laut Hersteller auch für den iPod Mini geeignet sein soll. 

 

Es gibt nur drei Knöpfe auf der Oberseite. Den Ein- und Ausschaltknopf, einen Knopf zum Wechseln zwischen dem Ansichts- und dem Photo-Modus und natürlich den Auslöser. An einer Ecke ist dann noch ein Wippschalter für den optischen und digitalen Zoom. Die Rückseite wird von einem 3,5" Bildschirm mit Touchfunktion eingenommen. Alle weiteren Funktionen werden über Menüs eingestellt. Dafür wurde von Sony ein Plastikstift mitgeliefert, den man neben den Fingernägeln verwenden kann, um die Funktionen auszuwählen. 

 

Da zeigt sich eine Schwäche der Kamera, auch wenn es eine Einstellung gibt, die nur die nötigsten Elemente am Bildschirm zeigt. Die Menüführung ist teilweise sehr unübersichtlich und nicht so durchdacht. Fast jede Funktion muss man zweimal bestätigen und teilweise gibt es keine Hilfe. Auch das mitgelieferte Handbuch ist teilweise unübersichtlich. 

 

Bei der Menge an Funktionen und Einstellungen kommt man leicht durcheinander. Dafür gibt es eine große Menge an Hilfen und Automatismen, die es dem Anfänger leicht machen, schnell gute Fotos zu schießen. So kann die Kamera nicht nur Gesichter erkennen, sondern auch lächelnde Menschen. Im Vollautomatischen Modus, der standardmäßig aktiv ist, macht die Kamera alle Einstellungen von selbst, wählt das ideale Programm, Blitz, Belichtungszeit und auch Gesichtserkennung aus. 

 

Alle Programme und Einstellungen können von Hand angepasst und ausgewählt werden. Der Profi kann also auch alles anpassen. Ein Programm namens Easy bringt nur die nötigsten Menüs auf den Bildschirm und benutzt größere Schriftarten. 

 

Neben der reinen Ansicht kann man seine Fotos und auch die Filme (die Kamera kann auch Filme und Ton aufnehmen) auch in Maßen bearbeiten. Fotos lassen sich verfremden, eine Funktion lässt (nach Möglichkeit) selbst Frau Merkel lächeln, ein einfaches Malprogramm lässt Bilder mit Stempeln, Rahmen und Strichen versehen. Das Original bleibt dabei unangetastet. 

 

Auch Rote Augen lassen sich direkt entfernen, auch wenn der Blitz automatisch rote Augen vermeiden hilft. 

 

Am Mac verhält sich die Kamera wie jede Kamera sich am Mac verhalten sollte: Anschließen, iPhoto wird aufgerufen und man kann die Bilder importieren. Auch kann vom Mac Musik importiert werden und für die eingebaute Diashow-Funktion genutzt werden. Dabei verhält sich die Kamera wie ein Wechsellaufwerk. 

 

Die Produktregistrierung im Internet ist allerdings weniger Mac-Like. Sowohl Safari, als auch der Mac-Feuerfuchs verarbeiteten die Formulare nicht, erst mit einem Windows XP und Internet-Explorer konnten wir die Kamera anmelden und ein weiteres Jahr Garantie bekommen. 

 

Fazit: Bislang hat mich die Kamera nicht enttäuscht, 10,1 Megapixel, eine brauchbare Bildqualität (entgegen den Tests von cnet), viel zu entdecken. Ich werde weiter sehen.


Mac OS X in China

 

In China gibt es zwar nur wenig zum Thema, aber doch hat Apple in jeder Stadt einen größeren Partnershop und pünktlich zur Olympiade 2008 gibt es auch noch einen echten Appleshop in Beijing. 

 

Neben vielen Kopien der iPods, und natürlich auch des iPhones gibt es auch das Original, wobei letzteres ein "befreites" iPhone ist, das so gerade eben läuft. Die Gespräche mit dem größten chinesischen Anbieter, China Mobile, bei dem ich auch mein Handy laufen habe, sind gescheitert (zumindest als letzter Stand). Bleiben würde damit nur noch China Unicom, die eine wesentlich schlechtere Wahl in China sind. Netzabdeckung, Service, und Preise sind schlechter. Auch ist es nicht möglich, die Karte von - sagen wir mal - Beijing nach Guangzhou zu übernehmen. 

 

Ich habe mit China Unicom schlechte Erfahrung gemacht und die meisten anderen Expats, die ich so kenne, haben eine ähnliche Erfahrung. Sollte das iPhone tatsächlich nur noch mit China Unicom laufen, würde dies für Apple nicht unbedingt die beste Wahl sein. Also hoffe ich immer noch, das Apple wieder Gespräche mit China Mobile aufnimmt.

 

Macs spielen vor allem - wie auch in Deutschland - fast nur eine Rolle im Druckbereich. Auch Linux spielt eine untergeordnete Rolle, auch wenn die Regierung sehr viel Druck für die Entwicklung im Bereich Linux unternimmt. 

 

Windows ist allerorten und im Gegensatz zu Deutschland bemüht man sich eher weniger seine Webseiten auf andere Browser und Betriebssysteme zu optimieren, als Windows und den Internetexplorer. 

 

Trotzdem gibt es eine kleine aber feine Macgemeinde und es werden immer mehr, die die Vorzüge des Betriebssystem aus dem Hause Apple nutzen.