Kategorien
Webdeveloper Tools

Json gut lesbare Ausgabe erzeugen Firefox Plugin

Für eine bessere Lesbarkeit von Json ist das Firefox-Browser-Plugin JsonView sehr zu empfehlen.

Damit sieht das folgender Maßen aus, wenn im Header die Datei als json gekennzeichnet ist:

 

Kategorien
Xbox Kinect SDK

Xbox Kinect Programmierung für Windows Beispiel Videos

Die Besucher können Spiele über Gesten spielen

Kategorien
iPhone/iOS Mobil

günstigste Hardware für iOS Entwicklung: Mac Mini Tuning

Wenn man man vorhat in die iOS Entwicklung einzusteigen und seine eigene App programmieren will, benötigt man zwingend einen Mac, der nicht gerade billig ist. Im folgenden Artikel beschreibe ich, wie ich mir für 350€ (November 2012) einen Mac für die Entwicklung meiner iPhone Apps gekauft und diesen für Xcode aufgerüstet habe.

Für die iOS Entwicklung für iPhone und iPad benötigt man zwingende einen Mac mit Intel Prozessor. Leider sind diese nicht besonders günstig zu haben 🙁

Außerdem braucht man für die Programmierung zwingend Xcode als IDE, um auf iPhone und iPad zu testen und die App in den Store zu bringen.

Die neuste Version Xcode (4.5 aktuell) wiederum benötigt zwingend Mac OS X 10.7, was als Mindestanforderungen 2GB RAM und mindestens eine Intel Core 2 Duo benötigt (Achtungen, einen Intel Core Duo reicht nicht aus!).

Als günstigste Alternative habe ich mir deshalb einen gebrauchten Mac Mini gekauft mit

Kategorien
Android Phonegap/Cordova

Vergleich von Augmented Reality Frameworks für Android

[table id=1 /]

Fazit:

Ich habe mich für Mixare entschieden, welches  sehr gut gecodet, aber weniger gut dokumentiert ist. Ist ist sehr einfach möglich seine eigenen Daten oder Wikipedia Daten über die Kamera zu legen und gleichzeitig dieselben Daten auf Google Maps als Marker anzuzeigen.

Vuforia erscheint für die Entwicklung von Android/iPhone Lösungen der geeignete Kanditat zu sein, jedoch wird in der Lizenz verlangt, dass Benutzerdaten an den Qualcomm Server gesendet werden und der User darüber informiert werden muss:

Auszug aus der Lizenz von Vuforia

„You must inform end-users of your application that certain types of anonymous usage data is collected by the Vuforia SDK and sent back to Qualcomm servers.“

„(i) the collection by QUALCOMM and/or its affiliates of Statistics from the Software (including but not limited to: (a) information about the end users‘ devices such as device unique identifier, make, model, operating system name and version and kernel version, (b) information about our Software used to create your software or augmented reality end user application such as the SDK version and device profile, and (c) information about your software or augmented reality application and its use such as settings (e.g., camera resolution settings, configuration settings), start and stop dates and times, camera on/off events, target image obtained/lost events, and other general usage information (collectively „Statistics“)).“

Kategorien
Erlang

Erlang Übungsbeispiele

Aufgabe: 2520 ist die kleinste Zahl, die durch jede Zahl von 1-10 ohne Rest geteilt werden kann. Was ist die kleinste positive Zahl, die durch alle Zahlen von 1-20 ohne Rest teilbar ist? Es soll die Brute Force Variante programmiert werden.

Lösung:

-module(kleinsterAllesTeiler).
-compile(export_all).

kleinsterAllesTeiler(X) -> kleinsterAllesTeiler(X, 2, X).
kleinsterAllesTeiler(X, Teiler, KleinsteSuperZahl) when (Teiler > X) -> KleinsteSuperZahl;
kleinsterAllesTeiler(X, Teiler, KleinsteSuperZahl)->
    %io:fwrite("X: ~w \t Teiler: ~w \t KleinsteSuperZahl: ~w\n", [X, Teiler, KleinsteSuperZahl]),
    case teilbar(KleinsteSuperZahl, Teiler) of
        true ->kleinsterAllesTeiler(X, Teiler + 1, KleinsteSuperZahl);
        false ->kleinsterAllesTeiler(X, 2, KleinsteSuperZahl + 1)
end.

teilbar(X, Teiler) when (X rem Teiler) == 0 -> true;
teilbar(X, Teiler) -> false.
Kategorien
Diverses SEO

Blog Artikel auch in China in chiniesisch

Seit neustem habe ich eine Übersetzungsfunktion eingebaut in meinen Blog für verschiedene Sprachen, u.a. auch für chinesisch und siehe da, meine Webseite wird auch auf baidu.com, dem chinesischen Google gerankt in der Landessprache: Baidu xdebug auf den Artikel Xdebug (in Sprache chinesisch).

 

SEO Baidu in China
Kategorien
Diverses

Oh mein Gott… wo bist?

 

Kategorien
Erlang

Erlang Tutorial Windows

Für die professionelle Entwicklung mit Erlang stehen verschiedene Editoren und IDEs zur Verfügung: Übersicht siehe Punkt 7.7. Leider konnte mich das Eclipse Plugin nicht überzeugen und das Netbeans Plugin lies sich nicht installieren und Netbeans 7, weswegen ich Notepad++ benutze zum Entwickeln (siehe unten).

Die Vorteile der funktionalen Programmiersprache Erlang

  1. mathematische Korrektheitsbeweise sind einfach möglich
  2. sehr kurzer Quelltext
  3. für verteilte Anwendungen sehr geeignet
  4. der Datentyp INT ist nicht beschränkt, keine numerischen Effekte (Runden)
  5. keine Seiteneffekte

Bsp. Anwendungen in Erlang geschrieben:

  1. CouchDB
  2. SimpleDB
  3. Yaws – Webserver
Kategorien
VBA Excel

Excel Makros automatisch in jeder Arbeitsmappe verfügbar machen

Wenn man Makros geschrieben hat, die nicht nur in einer Arbeitsmappe zur Verfügung stehen sollen, bietet Excel 2010 für PCunter Windows 7 folgenden Funktion an:

Man legt eine Datei namens PERSONAL.XLSB.

C:\Users\IhrWindowsName\AppData\Roaming\Microsoft\Excel\XLSTART

an und bringt dort seine Makros unter, die bei jedem Excel Start geladen werden sollen. Es öffnet sich dann immer gleichzeitig zwei Dateien beim öffnen von Excel: die eigentliche Datei und die PERSONAL.XLSB. (Die Datei kann auch anders genannt werden unter Excel 2010, es werden alle Excel Datein in diesem Ordner automatisch geöffnet beim Start von Excel).

In der PERSONAL.XLSB sollte der Code wie gewohnt in ein Makro gelegt werden. Wenn gewünscht wird, dass ein Makro automatisch beim Start von Excel ausgeführt wird, um z.B. eigene Menüs zur Verfügung zu stellen, kann die Methode

Private Sub Workbook_Open()

genutzt werden unter DieseArbeitsmappe.

Excel 2011 für MAC

Geht leider nicht, nur über Addins.

Addins in Excel für Mac und PC

Mit Addins lassen sich eigene Menüs einbauen in Excel, die dann auch in jeder Arbeitsmappe verfügbar sind. Diese müssen in unter „DieseArbeitsmappe“ gespeichert und die Arbeitsmappe danach neu geöffnet werden, damit der Beispiel Code ausgeführt wird.

Private Sub Workbook_Open()

Dim cbMainMenuBar As CommandBar

Dim cbcCutomMenu As CommandBarControl

On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("&Mein Menupunkt").Delete
On Error GoTo 0

 Set cbMainMenuBar = _
     Application.CommandBars("Worksheet Menu Bar")

 Set cbcCutomMenu = _
     cbMainMenuBar.Controls.Add(Type:=msoControlPopup)

  cbcCutomMenu.Caption = "&Mein Menupunkt"

 With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
                .Caption = "Absätze entfernen"
                .OnAction = "AbsaetzeEntfernen"
 End With

 With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
                .Caption = "csv Dateien zusammenfügen"
                .OnAction = "csvMerge"
 End With

 With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
                .Caption = "Export einzelner .txt Dateien"
                .OnAction = "transponierenUndSpeichern"
 End With

End Sub
Kategorien
Mobil Phonegap/Cordova

Phonegap natives Android Plugin erstellen Tutorial

Mit Phonegap lässt sich nativer Code triggern aus Javascript heraus mit folgendem Code:

//onDeviceReady          

cordova.exec( success, fail, "UploadImage", "nativeAction", ["success"]);    

            function success (result) {    
                alert("SUCCESS: \r\n"+result );
                }
            function fail (error) {    
                alert("ERROR: \r\n"+error );
                }

Dieser Code ruft die Klasse UploadImage die Funktion execute mit Parameter action=’nativeAction‘ und einem JsonString(!) data = „[’success‘]“ auf. Data kann dafür verwendet werden Daten nach Java zu übergeben:

import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;

public class UploadImage extends Plugin {
    public static final String NATIVE_ACTION_STRING="nativeAction";       
    public static final String SUCCESS_PARAMETER="success";
    @Override
    public PluginResult execute(String action, JSONArray data, String callbackId) {
        Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!");             
        //only perform the action if it is the one that should be invoked              
        if (NATIVE_ACTION_STRING.equals(action)) {                    
            String resultType = null;                    
        try {                          
            resultType = data.getString(0);                    }                    
        catch (Exception ex) {                          
            Log.d("HelloPlugin", ex.toString());                    }                    
        if (resultType.equals(SUCCESS_PARAMETER)) {                          
            return new PluginResult(PluginResult.Status.OK, "Yay, Success!!!");                    
            }                    
        else {                          
            return new PluginResult(PluginResult.Status.ERROR, "Oops, Error :(");                    
            }              
        }                
        return null;
    }
}

Außerdem muss das Plugin in die res/xml/config.xml eingetragen werden:

<plugin name="UploadImage" value="de.sv.foo.plugin.UploadImage"/>

 

Die Ausgabe sollte sein:

"SUCCESS: Yay, Success!!!"