Kategorien
Android C C++ CodeIgniter Framework iPhone/iOS Java JavaScript Mobil MySQL PHP Webdeveloper Tools Zend Framework

Teil 1: Clean Code – Regeln für guten, sauberen Code

Sauberen und leicht verständlichen Code zu schreiben ist das höchste Ziel in einem guten IT-Projet. Vieles hängt davon ab:

  • Wartbarkeit
  • Einarbeitungszeit für andere Programmierer, versteht man schnell, was einzelne Funktionen erledigen
  • Robustheit bei Änderungen
  • Testbarkeit, fällt alles zusammen, bei kleinen Änderungen, können schnell stabile Updates bereitgestellt werden
  • Popularität bei anderen Programmierern z.B: bei Open Source Projekten, als negative Beispiel sei XT-Commerce genannt

Das sehr zu empfehlende Standardwerk zu dem Thema ist „Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code“ von Robert C. Martin. In diesem Artikel werden Kapitel 1 bis 3 behandelt.

Aussagekräftige Namen

Der Namen einer Variable, Funktion oder Klasse sollte sofort erklären, warum Sie existiert, was sie tut und wie sie benutzt wird. Wenn eine Variable einen Kommentar benötigt, drückt Sie ihren Zweck nicht aus.

Bsp:

int d //Anzahl vergangener Tage
besser ist:
int daysSinceCreation;

Aussprechbare Namen verwenden

Keine Konstrukte mit unklaren Abkürzungen wie: int daSiCre anstatt von daysSinceCreation.

Suchbare Namen verwenden

Moderne IDEs machen das Suchen einfach, aber es nützt nichts, wenn man nach dem Buchstaben e einer Laufvariable suchen muss und von Ergebnissen überschwemmt wird.

Variablen Namen mit einem Buchstaben sind nur als lokale Variablen in kurzen Methoden zu verwenden.

Kategorien
iPhone/iOS

iPhone Mail stürzt ab beim Absenden

Bei mir stürzt beim Verschicken der Mails das Programm ab, weil im Namen des Empfängers ein „|“ enthalten ist. Mit solchen Sonderzeichen kann das iPhone interne Mail Programm nichts anfangen.

Lösung: Empfänger Email löschen und von Hand eintippen, so dass kein Sonderzeichen mehr enthalten.

Beispiel: Also anstelle der gepseicherten Variante „Mutter|Papa“, hinter welche eine Emailadresse steht, einfach eintippen „mail@eltern.de“.

Kategorien
Phonegap/Cordova

Phonegap Teil3: Basics und das erste Programm

Die Programmierung mit Phonegap erfolgt zum größten Teilin HTML(5) Javascript und CSS(3). Es wrd kein nativer Code benötigt, es kann aber per Plugin nativer Code benutzt werden.

Testen von mobilen Anwendungen

iOS: Safari, Develop->User Agent->Mobile Safari (iPhone, iPad)

Android: Firefox Addon: User Agent Switcher und fertige Listen mit User Agents.

Es wird empfohlen einen Webkit Browser (Safari oder Chrome) zum normalen Entwickeln zu benutzen, aufgrund der häufigen Verwendung auf den Zielsystemen.

Kategorien
Phonegap/Cordova

Phonegap Teil2: Installation für Android unter Eclipse Windows 7

Die Installation unter Eclipse für Android ist sehr einfach, es kann das Testprojekt verwendet werden aus dem Phonegap-Package oder selber ein Projekt angelegt werden.

Wichtig ist, dass das Tutorial zum jetztigen Zeitpunkt noch nicht auf den neuen Namen von Phonegap umgeschrieben war – Cordova – als die Dateien von bspw. phonegap-1.50.js in cordova-1.50.js umbenannt worden sind. Ich empfehle das Test-Projekt zu nehmen.

Das Test-Projekt für Android befindet sich unter lib\android und kann über Eclipse: new Project, with existing sources importiert werden. Die cordova-1.50.jar muss noch zum Build Path hinzugefügt werden (Project Properties/Java Build Path/Libraries/Add JARs) und das Test Projekt kann gestartet werden.

In der Demo kann man alle Phonegap Funktionen wie GPS, Accelerometer, Nummern wählen, vibrieren, Bildergalerie, Kontakte, Netzwerkstatus und Kompass ausprobieren auf dem Testhandy/Simulator.

20120322-113921.jpg

zurück zu Phonegap Teil1: Features und Möglichkeiten

Nach dem Buch:

Kategorien
Phonegap/Cordova

Phonegap Teil1: Features und Möglichkeiten

Mit Phonegap kann man Webanwendungen mit HTML5, CSS und Javascript bauen als mobile Webanwendung und gleichzeitig eine native App für den App-Store und den Androide Market. Phonegap ist Open Source und wird von der Apache Cooperation und Adobe unterstützt. Auch eine Mischung aus mobiler Anwendung als Webseite und nativer App im Store ist möglich. Die große Frage ist, wo sind die Grenzen von Phonegap, was ist nicht möglich? Welche Features und Möglichkeiten bietet Phonegap im Vergleich zu einer nativen App.

Systemvorraussetzung nach Zielplattform

iOS: MAC ab OS X 10.6

Android und HP WebOS: alle 3 (=Windows, Mac, Linux)

Symbian: alle 3, aber der Simulator läuft nur unter Windows

Blackberry: Windows, Mac, aber der Simulator läuft nur unter Windows

Windows 7 Phone: Mac ab OS X 10.5 🙂

Kategorien
Mobil

Native Apps in Objektive-C/Java vs. mobile Webanwendungen in HTML5

Für der Entwicklung einer App für iPhone und/oder Android stellt man sich die Frage, ob man wirklich für jedes System eine eigene native App schreiben will und die Kosten dafür trägt oder nicht einfach eine Webanwendung in HTML5, die auf allen System incl. Windows Phone und Blackberry usw. lauffähig ist. Eine Webanwendung läuft im Browser und kann nicht im App-Store angemeldet werden, es sei denn, man benutzt Phonegap.

Pro nativ

  • native Anwendung hat besseren Zugriff auf Gerätefunktionen, z.B. Bewegungssensoren
  • Performancevorteil
  • Grafik, z.B. OpenGl vs WebGl
  • Lbrarys von Drittanbietern für Cloud, Spezialfunktionen der Kamera, z.B. Barcode Scanner Modul
  • Vertrieb über den App Store bzw. die Markets
  • Verbleib auf dem Gerät des Users
  • grundsätzlich keine Internetverbindung nötig
  • leichte Monetarisierung durch Accounts und Abrechnungssysteme der Anbieter
  • HTML5, CSS, Javascript Funktionen der Handybrowser können sich unterscheiden

Pro Web

  • Aufwand sehr hoch für native Anwendung, Pflege von mindestens 2 Anwendung komplett getrennter Code in anderen Programmiersprachen und Layout-Systemen
  • Ablehnung von nativen iPhone Apps durch Apple möglich
  • keine laufende Kosten für die Stores, 99$ pro Jahr(!) bei Apple pro Account, Androide Market einmalig 25$
  • sofortige Updates, keine Wartezeit im App Store für Updates
  • kein MAC nötig für iOS, bzw. Windows für Windows Phone
  • große Entwickler-Community
Kategorien
Android Java

Java Date zu Unix Timestamp Converter

Convert Date to Unix Timestamp (Long).

import java.util.Date;

public class DateHelper {   
    public static Long dateToTimeStamp(Date date) {
        Long millis = date.getTime();
        if(millis > 0)
        {
            return millis/1000;
        }
        else
        {
            return (long) 0;
        }
    }
}
Kategorien
Android Java

Andorid Sicherheit MD5 Hashing Class

Eine einfache Klasse, um MD5 Hashes mit Java zu erstellen.

Anmerkung: MD5 ist nicht mehr sicher, es sollte SHA1 verwendet werden. Wenn kein Weg drum herum führt, immer mit Salt verwenden.

public class Security {
    
    private static final String TAG = Security.class.getSimpleName();

    public static String getMd5Hash(String string) {
        String result = null;
        byte[] defaultBytes = string.getBytes();
        
        MessageDigest algorithm;
        try {
            algorithm = java.security.MessageDigest.getInstance("MD5");
            algorithm.reset();
            algorithm.update(defaultBytes);
            byte messageDigest[] = algorithm.digest();
                    
            StringBuffer hexString = new StringBuffer();
            for (int i=0;i<messageDigest.length;i++) {
                    String hex = Integer.toHexString(0xFF & messageDigest[i]); 
                    if(hex.length()==1)
                    hexString.append('0');
                    hexString.append(hex);
            }
            result = hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "MD5 not available", e);
        }
        return result;                
    }
}
Kategorien
Android

Blackberry Android Apps in Eclipse testen

Das Blackberry Playbook bietet die Möglichkeit Android Apps zu starten. Über Eclipse ist ein einfaches Testen im Simulator möglich.

  1. Als erstes muss VMware und der der PlayBook Simulator installiert werden. Anleitung. Dazu muss unfreundlicherweise ein Installer Programm zusätzlich installiert werden (Akami NetSessions).
  2. Code Signing Keys beantragen/registrieren bei Blackberry (kann bis zu 2 Stunden dauern)
  3. Zertifikate in Eclipse anlegen mit Hilfe der Keys.
  4. Debug Token installieren auf dem Simulator
  5. Projekt in Android Api 2.3.3 ändern und Blackberry Struktur hinzufügen
  6. Hoffen, dass es läuft 🙂
Kategorien
Android

Android: Failed to install .apk on device (null)

Bei einer Fehlermeldung wie dieser:

Failed to install xxx.apk on device 'emulator-5554!
 (null)
 Launch canceled!

Kann man durch Neuanlegen eines neuen Virtual Devices (AVD) den Fehler beheben, alles andere hat bei mir nicht funktioniert.