Alte Internet Explorer für Testzwecke bei Webapplikationen

Viele unserer Kunden verwenden noch den Internet Explorer 8, weil ihre Richtlinien im Unternehmen ihnen das Aktualisieren auf den Internet Explorer 10 bzw. das Verwenden eines anderen Browsers, z.B. Google CHrome oder Firefox, untersagen. Als Entwickler muss man aber auch mit dem aktuellen Internet Explorer 10 testen, das parallele Installieren von Internet Explorer 8 und 10 ist nicht möglich. Als erstes kommt einem eine Virtualisierung in den Sinn, z.B. mit VM Ware, um in einer VM den IE8 und in einer anderen den IE10 zu haben.

Es geht aber noch viel einfacher: Man drückt im Internet Explorer 10 einfach die Taste F12. Dann erscheint unten eine separate Leiste. In dieser Leiste kann man z.B. Javascript debuggen oder HTML Code einsehen. Weiter rechts kann man aber auch den Browsermodus einstellen. Dort kann man zwischen Internet Explorer 7, 8, 9 und 10 wählen. Einfach die beliebige Version einstellen und schon kann mit der entsprechenden Version die Webapplikation getestet werden.

Posted in Internet

Standbymodus programatisch abschalten

Bei einem unserer App-Entwicklungen hatten wir das Problem, das bei Datensynchronisierungen mit einem Webservice die IOS Geräte nach den eingestellten Zeiten in den Standbymodus gingen. Im Standbymodus lief dann die Datensynchronisierung nicht weiter. Dies war für viele Benutzer extrem lästig.

Hierfür gibt es eine einfach Lösung. Bevor die Datensynchronisierung gestartet wird, muss einfach nur folgende Codezeile ausgeführt werden:


[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

Am Ende der Datensynchronisierung ruft man diese Zeile Code auf, um den Standbymodus wieder zu aktivieren:


[[UIApplication sharedApplication] setIdleTimerDisabled:NO];

Posted in XCode

Automatic Lightweight Migration

Heute mussten wir für ein App das Datenmodell der Datenbank ändern. Da das App bereits im App-Store ist, kann das aktuelle Datenmodell nicht einfach geändert werden. Deswegen haben wir eine Lösung gesucht, wie man ein Update auf ein neues Datenmodell machen kann und siehe da, die Lösung heisst “Automatic Leightweight Migration”.

Hier kann die Lösung eingesehen werden: http://stackoverflow.com/questions/1830079/iphone-core-data-automatic-lightweight-migration

Hier noch mal zusammengefasst:


To recap/Full guide:

1. Before making any change, create a new model version.

In Xcode 4: Select your .xcdatamodel -> Editor -> Add Model Version.
In Xcode 3: Design -> Data Model -> Add Model Version.
You will see that a new .xcdatamodel is created in your .xcdatamodeld folder (which is also created if you have none).

2. Save.

3. Select your new .xcdatamodel and make the change you wish to employ in accordance with the Lightweight Migration documentation.

4. Save.

5. Set the current/active schema to the newly created schema.

With the .xcdatamodeld folder selected:
In Xcode 4: Utilities sidebar -> File Inspector -> Versioned Core Data Model -> Select the new schema.
In Xcode 3: Design > Data Model > Set Current Version.
The green tick on the .xcdatamodel icon will move to the new schema.

6. Save.

7. Implement the necessary code to perform migration at runtime.

Where your NSPersistentStoreCoordinator is created (usually AppDelegate class), for the options parameter, replace nil with the following code:

[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]

8. Run your app. If there's no crash, you've probably successfully migrated :)

0. When you have successfully migrated, the migration code (step 7) can be removed. (It is up to the developer to determine when the users of a published app can be deemed to have migrated.)

IMPORTANT: Do not delete old model versions/schemas. Core Data needs the old version to migrate to the new version.

Posted in XCode

Implicit declaration of function – C99

Heute erhielten wir in XCode bei einer App-Entwicklung folgende Warnung:

Implicit declaration of function - C99

Dieser Fehler erschien, weil wir in einem App ein Framework verwendet haben, das eine C++ Funktion aufgerufen hat, in etwas so:

FunctionName("string");

Diese Zeile Code verursacht nur eine Warnung, sollte aber eigentlich einen Fehler verursachen.

Lösung: Man muss das Framework im Header-file mit #import angeben, sonst kann die Funktion nicht gefunden werden.

Posted in XCode

Datei oder Assembly … wurde nicht gefunden. Zugriff verweigert.

Wir hatten bei einem Kunden ein Webprojekt in ASP.NET veröffentlicht. Ab und zu bekamen Anwender folgende Meldung: “Datei oder Assembly … wurde nicht gefunden. Zugriff verweigert.”

Die Ursache war, das einige User nicht in der lokalen Gruppe “IIS_IUSRS” waren. Somit haben diese User auch keine Berechtigung auf folgendes Verzeichnis:
“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”

Lösung: Alle Benutzer die auf dem Webserver IIS zugreifen, müssen in der lokalen Gruppe “IIS_IUSRS” sein. Man kann auch Active Directory Gruppen dieser lokalen Gruppe “IIS_IUSRS” zuordnen.

Posted in ASP.NET, C#, IIS, VB.NET

Blog Dich frei!

Willkommen bei unserem neu eingeführten Blog. In unseren Projekten stolpern wir immer wieder über Hürden. Die Lösungen für diese Hürden wollen wir ab sofort gerne mit Ihnen teilen – denn es gibt nichts Schlimmeres als bei irgendeinem Problem zu “hängen” – das kostet Zeit und Nerven! Wir hoffen, dass wir Ihnen mit diesen Lösungsvorschlägen einige Nerven sparen können.

Posted in Ohne Kategorie