Samstag, 13. Oktober 2012

Wie bekomme ich den Google+ Messenger auf den Desktop / How to run the Google+ Messenger on Desktop

Bestimmt hat der eine oder andere ein Smartphone mit Google+ und nutzt dort den Messenger.
Wenn man zuhause ist und am PC sitzt möchte man dann sein Gespräch vom Handy fortsetzen aber ohne nervige Smartphone Tastatur. Leider bietet Google keinen direkten Weg in den Chat zu gelangen. denn auf der Desktop Welt kann man nur über GTalk kommunizieren (WARUM AUCH IMMER).....

Was benötige ich?

BlueStacks  -> http://http://bluestacks.com

Was ist BlueStacks?
Blue Stacks ist eine art Android Simulator für den heimischen Desktop Computer. Mit BlueStacks kann man also Apps runterladen und ausführen.

Was ist zu tun?
1. BlueStacks runterladen
2. BlueStacks installieren
3. BlueStacks starten
4. nach Google suchen
5. Google+ installieren
6. nach dem einloggen muss über die Notificationbar (von oben runterziehen wie beim Smartphone) das Konto mit den nötigen rechten ausgestattet werden...
7. Messenger starten und CHATTTEN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Requirements

BlueStacks  -> http://http://bluestacks.com

What is BlueStacks?
Blue Stacks is a android simulator for desktop computers. BlueStack is able to download and run any apps from Google Play Store.

ToDo List
1. download Bluestacks
2. install blueStacks
3. run blue stacks
4. search for google
5. install the google+ app
6. at the notificationbar (slide from the top) u have to accept account permissions for your google account
7. run the messenger ... enjoy


Freitag, 27. Juli 2012

Horizontaler UITableView (Trick)

Einleitung
Wer hat sich als iOS Entwickler noch nicht gefragt warum die UITableView nur vertikal scrollt?! ...
Es wäre doch super wenn sie das auch horizontal könnte. Ein kleiner Trick den ich im Netz gefunden habe macht die UITableView auch horizontal Scrollbar.

Funktionsweise
Die Tabelle wird um 90 Grad gedreht (auf die Seite gekippt), damit die Zellen aber nicht auch auf der Seite liegen werden diese wieder zurück gedreht.

Schritt 1:
Normalen ViewController anlegen der von UITableViewController erbt.

Schritt 2:
in der ViewDidLoad folgende zeilen eintragen um die Tabelle zu drehen


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    const CGFloat k90DegreesCounterClockwiseAngle = (CGFloat) -(90 * M_PI / 180.0);
    CGRect frame = tableV.frame;
    tableView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, k90DegreesCounterClockwiseAngle);
    tableView.frame = frame; 
}


Schritt 3:
In der Methode in der die UITableCellView erzeugt und konfiguriert wird die Zelle drehen

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (!cell) 
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }    

    CGFloat k90DegreesClockwiseAngle = (CGFloat) (90 * M_PI / 180.0);    
    cell.transform = CGAffineTransformRotate(CGAffineTransformIdentity, k90DegreesClockwiseAngle);
    
   //your cell init here
    //.....................
    
    return cell;
}



Die Zellenbreite kann über die folgende Methode (die eigentlich für die Höhe zuständig ist) konfiguriert werden. In dem Codebeispiel gebe ich die Breite des Bildschirms zurück... so ist die Cell immer genau so breit wie eine Bildschirmbreite...

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return self.view.bounds.size.width;
}

Mittwoch, 25. Juli 2012

iPhone Bedienung mal anders

Einleitung

Wer das iPhone kennt weiß so ziemlich schnell wie es zu bedienen ist. Das ist dem Bedienkonzept von Apple zuzuschreiben. Dieses ist in seine Navigationsstrukturen auch recht Übersichtlich. Mir persönlich wird es immer schnell langweilig wenn ich die 1000 App mit einer TabBar oder NavigationBar sehe. Deshalb habe ich neues Bedienkonzept gebaut welches mal ein wenig mehr Abwechslung bringen soll.

Video
Funktionsweise


Der Grundaufbau besteht aus einem eigenen neuen Controler Typ den ich TileViewController nenne. Er kann eigentlich unendlich viele Unterviewcontroller beherbergen ähnlich wie z.B. ein TabViewController.
Nach dem Initialisieren des TileViewControllers fügt man ihm lediglich seine gewünschten ViewController hinzu und gibt für jeden ViewController die Zeile an in der er dargestellt werden soll. Die Kachelgrößen werden dann automatisch vom TileViewController zugewiesen. 


Im Pseudocode sieht das ungefähr so aus:


[tileviewController addViewController:vc1 inRow:0];
[tileviewController addViewController:vc2 inRow:0];
[tileviewController addViewController:vc3 inRow:1];
[tileviewController addViewController:vc4 inRow:2];

Und schon haben wir folgende Zeilen:
Zeile 1: vc1;vc2
Zeile 2: vc3
Zeile 3: vc4

Wer Code sehen möchte kann mich gerne in den Kommentaren fragen ... Gruß Maurice
Wanna see code? ask me via comments

Donnerstag, 15. März 2012

Flash Builder, Mobile und der SplashScreen

Seit Flash Builder 4.6 gibt es die Möglichkeit für Mobile Apps eine SplashScreenImage  anzulegen...
Leider waren die Beispiele von Adobe für meine Zwecke nicht ausreichend... wer z.B. iPad, iPhone 3GS, iPhone 4S, Android Smartphone und Android Tablet abdecken will hat mehr Probleme mit dem Splashscreen als man sich vorstellen kann... hier meine Lösung die alle Varianten Abdeckt:



<?xml version="1.0" encoding="utf-8"?>
<s:SplashScreenImage xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Declarations>
<!-- Platzieren Sie nichtvisuelle Elemente (z. B. Dienste, Wertobjekte) hier -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.core.FlexGlobals;
[Embed(source="assets/imgs/Default.png")] //320x480
[Bindable]
public var ios160p:Class;
[Embed(source="assets/imgs/DefaultLandscape.png")]  //480x320
[Bindable]
public var ios160l:Class;
[Embed(source="assets/imgs/Default@2x.png")]  //640x960
[Bindable]
public var ios320p:Class;
[Embed(source="assets/imgs/Default@2xLandscape.png")] //960x640
[Bindable]
public var ios320l:Class;
[Embed(source="assets/imgs/Default-Landscape~ipad.png")] //1024x748
[Bindable]
public var iosTablettL:Class;
[Embed(source="assets/imgs/Default-Portrait~ipad.png")] //768x1004
[Bindable]
public var iosTablettP:Class;
[Embed(source="assets/imgs/logoTabletPortraitDefault.png")] //800x1232
[Bindable]
public var andTablettP:Class;
[Embed(source="assets/imgs/logoTabletLandscapeDefault.png")] //1280x752
[Bindable]
public var andTablettL:Class;
[Embed(source="assets/imgs/logo160PortraitDefault.png")] //320x480
[Bindable]
public var and160p:Class;
[Embed(source="assets/imgs/logo160LandscapeDefault.png")] //480x320
[Bindable]
public var and160l:Class;
[Embed(source="assets/imgs/logo240PortraitDefault.png")] // 480x800
[Bindable]
public var and240p:Class;
[Embed(source="assets/imgs/logo240LandscapeDefault.png")] //800x480
[Bindable]
public var and240l:Class;
[Embed(source="assets/imgs/logo320PortraitDefault.png")] //640x960
[Bindable]
public var and320p:Class;
[Embed(source="assets/imgs/logo320LandscapeDefault.png")] //960x640
[Bindable]
public var and320l:Class;
// Override getImageClass() to return an image for iOS.
override public function getImageClass(aspectRatio:String, dpi:Number, resolution:Number):Class
{
// Is the application running on iOS?
var isIOS:Boolean = (Capabilities.version.indexOf("IOS") == 0 ? true:false);
if(aspectRatio == StageAspectRatio.PORTRAIT) //Portrait
{
if(dpi == 160 && resolution<1000)//real 160
return (isIOS==true?ios160p:and160p);
else if(dpi == 160 && resolution>1000)//tablett
return (isIOS==true?iosTablettP:andTablettP);
else if(dpi == 240) return and240p;
else if(dpi == 320)
return (isIOS==true?ios320p:and320p);
}
else //Landscape
{
if(dpi == 160 && resolution<1000) //real 160
return (isIOS==true?ios160l:and160l);
else if(dpi == 160 && resolution>1000)//tablett
return (isIOS==true?iosTablettL:andTablettL);
else if(dpi == 240) return and240l;
else if(dpi == 320)
return (isIOS==true?ios320l:and320l);
}
return super.getImageClass(aspectRatio, dpi, resolution);
}
]]>
</fx:Script> </s:SplashScreenImage>

Sonntag, 26. Februar 2012

Folder Sync für Minus

(english on the buttom)

Mein neustes Projekt entstand aus lauter Langeweile. Eigentlich benutze ich Dienste wie Drop Box und Co. eher selten. Aber mir ist aufgefallen, dass nur Drop Box einen guten Desktop Client anbietet, der es dem User möglichst einfach macht seine Daten mit der Drop Box zu synchronisieren. Da Minus.com deutlich mehr Speicher bietet und außerdem auch noch größere Dateien erlaubt das Desktop Tool aber eher mies ist, habe ich den Anfang gemacht ein eigenes Tool zu programmieren.

Grundlegende Idee ->  Ein Programm zum Synchronisieren eines lokalen Ordners auf der Festplatte mit allen Dateien die auf Minus.com gespeichert sind.

 Das heißt:
- Nach Eingabe von Benutzername und Passwort werden alle online Dateien in einen frei gewählten lokalen Ordner kopiert.
- Einfach Dateien per Windows Explorer in den lokalen Ordner kopieren und das Programm lädt die die Dateien automatisch hoch.

Aktueller Stand (funktionierende Features):
- Login
- Pfad auswählen
- Alle Dateien runterladen
- Letzte eingaben (name, passwort, pfad) speichern

Geplante Funktionen:
- Automatischer Upload von Dateien
- Automatisches regelmäßiges überprüfen ob neue Dateien auf dem Server sind zum Runterladen
- Hübschere Benutzer Schnittstelle (GUI)
- Minimieren ins System Tray

english:
Current State (working features):
- Login
- Choose  Path
- Download all online files to path
- save username, password, path for next App Start

whats next?:
- automatic file upload
- scheduled check for new online files to download
- more pretty GUI
- minimize app to system tray

aktueller (current) Build: 0.0.0.1:
https://rapidshare.com/files/301806078/FolderSync.zip



UPDATE:
Weitere Informationen unter ->

http://minusfoldersync.blogspot.com/

Donnerstag, 9. Februar 2012

Abschlussarbeit und das richtige Zitat in Word

Wer eine Abschlussarbeiten muss, weiß er hat vernünftig seine Quellenangaben zu machen. Wer seine Arbeit in Word schreibt erntet bei einigen Latex Fetischisten zwar unendlich viel Hohn, hat aber außerdem das Problem, dass Word einem nur wenige Zitat Vorlagen bietet. Nach langem Suchen und rumprobieren habe ich es jedoch aufgegeben mi selbst eine Vorlage zu bauen und bin Gottseidank noch auf folgende Seite gestoßen:


Einfach herunterladen, entpacken und je nach Word Version in das entsprechende Verzeichnis kopieren... bei mir: c:\Program Files (x86)\Microsoft Office\Office14\
.... und schon erhält man nach Neustart von Word schön viele neue Vorlagen die auch das machen was man will... ich persönlich fand die IEEE Variante ganz angenehm.