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
C

Wie spart ZigBee die Energie für den Betrieb der Geräte

ZigBee Netzwerke sind sehr energiesparend und langlebig. Man kann ohne Probleme ein End-Device ohne Stromquelle für 5Jahre z.B. an einer Wand befestigen und Sie funktionieren mit der eigene internen Mini Batterie weiter.

Der Grund dafür ist auf programmatischer Sicht das System der Interrupts, welches die Hardware eines ZigBee Devices bei Bedarf an und wieder ausschaltet. Die Bauteile verbrauchen im Sleep-Mode nur 0,1% der Energie im Vergleich zum normalen Betrieb.

Kategorien
C

Aufbau eines C-Programms für ZigBee Network Processor von Texas Instruments

Das Develepment Kit von TI kann hier gedownloaded werden. Damit lassen sich ZigBee Coordinator und End Devices programmieren und steuern.

ZigBee ist eine drahtlose Technik, die es vergleichbar mit WLAN ermöglicht energiesparend und kostengünstig Geräte zu vernetzen und fernzusteuern. Bsp ZigBee Stromablesegeräte in Göteburg (Schweden)

Kategorien
C

Bit-orientierte Operationen in C

Bitwise AND

0 & 0 == 0

0 & 1 == 0

1 & 0 == 0

1 & 1 == 1

Bsp
int a = 0x005A; // a = 10 +  16*5 = 90, in binary: 0000 0000 0101 1010, 2 + 8 + 16 + 64 = 90
int b = 0x00F0; // b = 0 + 16*15 = 240, in binary: 0000 0000 1111 0000, 16 + 32 +64 + 128 = 240
int x = a & b; //                                  0000 0000 0101 0000, 16 + 64 = 80

Bitwise OR

Kategorien
PHP

PHP nicht schreibbare Dateien finden und beheben

Ich habe folgende Funktion gebaut, um bei kritischen Operationen mit Dateischreiboperationen auf dem Laufenden zu sein, wenn sich Schreibrechte geändert haben und ein Schreiben in die Datei nicht möglich ist. Leider können der Fileowner in den meisten Fällen nur vom Superuser gesetzt werden, deswegen verschickt das Script eine Mail im Fehlerfall.

Dieses Problem trifft dann bei mir auf, wenn meine IDE Netbeans automatisch Dateien hochlädt, die ich garnicht bearbeitet hatte (Remote Synchronisation), dann wird die Datei überschrieben und der Fileowner neu gesetzt.

function checkFileWritable($file)
{
    if(!file_exists($file))
    {
        file_put_contents($file, "");
    }
    if(!chmod($file, 0644))
    {
        $fileowner = fileowner($file);
        echo "counld not change File Permissions: $file, File Owner is: $fileowner";
        if(!chown($file, ftpUserID))
        {
            echo "counld not change File owner: $file ";            
            mail(mailadresse, "Schreibeprobleme","File: $file, File Owner is: $fileowner");
        }
    }
}
Kategorien
Diverses

Google weiß alles – Adsense Werbung wie Online Shop Kauf

Nachdem ich bei kickz eingekauft habe im Online Shop, bekomme ich jetzt nur noch Adsense Bannerwerbung zu sehen mit kickz Werbung wie die diese.Daran hat man sich ja mittlerweile gewöhnt.

Komisch ist nur, dass mein Warenkorb und alle Artikel, die ich mir angeschaut habe in der Werbung enthalten sind.

Alle 3 Artikel in dem Werbebanner habe ich mir angeschaut und in in einer anderen Farbe auch bestellt!

Google weiß eindeutig schon zu viel und beeinflusst uns bei allem, was wir im Netz machen.

 

Kategorien
WordPress

WordPress Text fliesst nicht um Bilder herum

Bei vielen Themes ist das der Fall, wenn man die vergessen hat in die styles.css seines Themes, den entsprechenden Code von der WordPress Seite einzufügen.

Kategorien
CSS jQuery WordPress

Entfernen von leeren HTML paragraph Tags

Der Editor von WordPress generiert leere <p> Tags, die nicht sehr hilfreich sind beim Gestalten.

Eine Lösung via CSS (CSS3 – Kampatibilität :empty):

p:empty
{
    display:none;
}

oder mit besserer Browser Kompatibilität und jQuery:

 <script>
    $("p:empty").hide();
</script>
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;                
    }
}