Engagierte neue Teammitglieder gesucht

24.10.2011 von Sandro Wellenzohn
Wir suchen zwei neue Mitglieder für unser Team, die Leidenschaft und Engagement mitbringen und Lust auf uns haben ; )
Wir freuen uns jetzt schon auf eure Bewerbungen!

Zur Ergänzung unseres Teams suchen wir per 1.1.2012 oder nach Vereinbarung eine/n Mobile Developer/in (80-100%).

Dein neuer Arbeitsplatz …

… bietet dir die Möglichkeit in interdisziplinären Web- und Mobile-Projekten von Anfang an als vollwertiges Teammitglied mitzuwirken und Verantwortung zu übernehmen. Du betreust als wichtiger Bestandteil des Development Teams bestehende Projekte und konzipierst und entwickelst neue Funktionen für das stationäre Web und für mobile Endgeräte. Du begleitest unterschiedliche Projekte in allen Projektphasen, was deinen Beruf besonders interessant macht.

Du solltest …

… technologiebegeistert sein, ein hohes technisches und analytisches Verständnis und sehr gute Kenntnisse in der Programmierung mit Objective C, Java Script, sowie im Umgang mit HTML und CSS mitbringen. Ausserdem solltest du sowohl selbständig als auch im Team arbeiten können und ein Gespür für Benutzerfreundlichkeit und Gestaltung haben.

Bewerben kannst du dich unter jobs@guavestudios.com..
Wir freuen uns auf dich!

Stellenanzeige als PDF anzeigen


Zur Ergänzung unseres Teams suchen wir ab sofort oder nach Vereinbarung eine Design Praktikantin.

Dein Praktikum …

… bietet dir die Möglichkeit in interdisziplinären Designprojekten von Anfang an als vollwertiges Teammitglied mitzuwirken und Gelerntes in der Praxis anzuwenden. Zu deinen Aufgaben gehören die Konzeption und Entwicklung von interaktiven Benutzeroberflächen für statische und mobile Endgeräte und das Umsetzen von Prototypen und Design-Entwürfen und natürlich der Kontakt zu Vertretern von Nutzergruppen und Experten.

Du solltest …

… am besten bereits etwa die Hälfte deines Designstudiums oder einer vergleichbaren Ausbildung absolviert haben und gerne im Team arbeiten. Zudem solltest du ein ausgeprägtes Gespür für Benutzerfreundlichkeit mitbringen und gute Kenntnisse im Umgang mit Photoshop oder Indesign sowie mit HTML und CSS haben.

Bewerben kannst du dich unter jobs@guavestudios.com.
Wir freuen uns auf dich!

Stellenanzeige als PDF anzeigen

USA Roadtrip Film 2011

20.09.2011 von Sergio Herencias

Im Mai 2011 war die Geschäftsleitung von Guave Studios auf eine abenteuerliche Inspirationsreise unterwegs in die Vereinigten Staaten von Amerika.
Wir konnten es natürlich nicht lassen und haben aus den entstandenen Impressionen, Erlebnissen und den vielen Timelapses einen Zusammenschnitt des Trips gemacht.
Ein einfaches und doch witziges Animationskonzept rundet diesen Travel-Film ab.

Viel Spass beim Schauen:

USA Roadtrip Film 2011 from Guave Studios on Vimeo.

Hier einige Details zu unserer Reise:

Strecke:
Zürich -> NYC -> SFO -> Santa Cruz -> Monterey -> San Simeon -> Lost Hills -> Death Valley -> Las Vegas -> Bryce -> Page -> Monument Valley -> Grand Canyon Village -> Las Vegas -> Los Angeles -> Zürich

3 Wochen
3 Zeitzonen
4362 Km / Strasse
Max. Temp 46 °C
Min. Temp 02 °C
über 12 Hotels & Motels
5 Staaten

Technische Lösung

Da wir viel zu Fuss unterwegs waren, mussten wir die Technik so kompakt wie nur möglich halten.
Wir entschieden uns für eine Schulterstabilisierung von redrockmicro.com und Stativen (von Manfrotto & Gizo Traveler).

2x Canon 5D Mark II
2x Canon 2.8 24-70mm
Canon 2.8 16-35mm
Canon 2.8 15mm fisheye
Canon 2.8 70-200mm
Canon 2x Converter
Canon 1.4 50mm
Nikkor 1.4 50mm

Filter: ND Fader von: lightcraftworkshop.com

Manche Timelapses wurden aus Gebäuden gemacht, bei denen sich das Fenster nicht öffnen lies. Dafür benutzten wir den Lenskirt – lenskirt.com
tolles Zubehör, das eine sehr schnelle Montage erlaubt.

Um das Equipment gut geschützt und kompakt transportieren zu können, verwendeten wir die fstopgear.com Rucksäcke.

Vielen Dank ans restliche Team für den tollen Einsatz während unserer Abwesenheit.

Screensaver/Bildschirmpräsentation mit Adobe AIR

20.09.2011 von Martin Muther

Problemstellung

Bildschirmschoner oder Präsentation in AIR anlegen. Dieser soll per Installer ausgeliefert werden und sich in ein System integrieren (Bildschirmschoner registrieren)

Aus einigen Referenzen konnte ich erste Ansätze herrauslesen. Dieser Eintrag soll nun eine Zusammenstellung einer Lösung mit Kompromissen aufzeigen.

Adobe AIR Applikation

Wir versuchen dieses Problem mit Adobe AIR zu lösen. Und zwar weil sich bei Screensavern mit Animation (Fotos/Videos) die Runtime von Flash besonders eignet. Das Grundpaket bitet zudem die Basis für eine plattformunabhänige Entwicklung, was besonders bei Präsentationsumgebungen sinnvoll ist. Bei einem Screensaver muss man verschiedene plattformbedingte Gegebenheiten beachten. Ein weiters Feature der AIR Runtime ist, dass wir keinen ActiveX Flash Player oder sonstige Software auf dem System (vor-)installieren müssen. Dies wird aus Sicherheitsgründen häufig von grösseren Firmen verlangt.

Grundvorraussetzung ist das FLEXSDK + AIR SDK. Die verwendeten Features setzen mindestens AIR 2.0 voraus. Ich verwende die aktuelle Version 2.7.

Wir verwenden das Adobe AIR Template von Flash Develop (in den neuen Builds enthalten). Hier sind die Standard Aktionen wie Keystore generieren und Package exportieren in BAT-Dateien schon vorhanden. Das Testen ist direkt aus FlashDevelop per adl.exe (im Framework enthalten) möglich. Das Template sollte ohne zusätzlichen Code sofort laufen.

Mehrere Bildschirme

Bildschirmschoner müssen auch mehrere Bildschirme abdecken können. Wir lesen per Screen.screens alle verfügbaren Bildschirme aus und erstellen jeweils einzelne Native Windows die wir mit Fullscreen aufschalten.

for (var i:int = 0; i > Screen.screens.length; i++) {
	var screen:Screen = Screen.screens[i];
 
	var sbounds:Rectangle = screen.bounds;
	var wndo:NativeWindowInitOptions = new NativeWindowInitOptions();
	var wnd:NativeWindow = new NativeWindow(wndo);
 
	wnd.x = sbounds.x;
	wnd.y = sbounds.y;
	wnd.width = sbounds.width;
	wnd.height = sbounds.height;
	wnd.visible = true;
	wnd.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
	wnd.stage.addEventListener(MouseEvent.MOUSE_DOWN, onUserPresent);
	wnd.stage.addEventListener(KeyboardEvent.KEY_DOWN, onUserPresent);
}

Bildschirmschoner Startparameter

Ein Bildschirmschoner unter Windows wird von der SCRSAV.exe mit Parametern aufgerufen:

/c = Einstellungsmodus
/p = Vorschau
/s = Als Screensaver ausführen

Da wir auf den Applikationsstart mit Invoke hören können wir auch auf die Startparameter zugreifen.

var args:Array = e.arguments;
txt.appendText("started with: " + args.join(",") + "\n");
txt.appendText("started with: available screens: "+Screen.screens.length+"\n");
if (args.indexOf("/s")>-1 || args.indexOf("/S")>-1 || args.length==0) {
	//application started as screensaver
	txt.appendText("go on with screens\n");
} else {
	txt.appendText("exit because params\n");
	NativeApplication.nativeApplication.exit();
	return;
}

Den Settingsmodus könnten wir mit /c abfangen und Einstellungen zulassen. Diese wären möglich in einer XML Datei zu speichern.

Gedacht wäre beim Parameter /p eine Preview darzustellen in dem kleinen Fenster. Wie sich das Microsoft gedacht hat: http://www.wischik.com/scr/howtoscr.html#CommandLineArguments

Die HWND* wird übergeben und wir könnten uns jetzt mit der Windows API das Rectangle ermitteln wo wir hinsollten… Ich brauch keine Preview ;-)

Deployment (the dirty part)

Nun folgt eigentlich der Part für den ich keine optimale Lösung gefunden und umgesetzt habe. Stattdessen suchte ich nach einer Kompromisslösung.

Dirty Premissions:

Logisch: Sicherheit! Aber nervt ;-)
Wir müssen eine EXE-Datei zu einer SCR-Datei kopieren. Dies wird im appicationDirectory gemacht. Tja und dass ist das eigentlich “dreckige” an der Sache. Andere Plattformen erlauben normalerweise keine Modifikation des Programmverzeichnisses während der Laufzeit. Z.b. wird auf anderen Plattformen die Applikation mit Nutzerrechten ausgeführt. Da die Nutzer aber normalerweise keine Adminrechte haben, dürften hier keine Dateien modifiziert werden.

Das liebe Windows ist hier nicht so strikt, vorallem weil die Installation mit Adminrechten durchgeführt wird. Also tricksten wir. Beim ersten mal Starten (gleich nach der Installtion) führen wir ein Script aus, das uns die Datei kopiert und den Screensaver aktiviert. Das Script wird hier mit Adminrechten ausgeführt und kann das Projektverzeichniss modifizieren.

Eine alternative Lösung wäre, pro User separat im userData Space die Applikation zu speichern, was wiederum Probleme mit der AIR Runtime geben würde. Auch ein funktionierender Ansatz wäre, eine zweite Applikation in die erste hineinzukompilieren, ich wollte allerdings einen schlankeren Ansatz.

Native Process

In Windows kann man einen Screensaver per RunDLL oder per Registry setzten. Interessant ist: Unter Windows XP geht das nur mit der RunDLL und bei Win7 nur per Registery, wenn die SCR nicht im Windows Verzeichnis liegt. Unsere AIR Applikation wird aber im Programm Verzeichnis liegen.

“Native Process” in AIR erlaubt uns lokale Dateien auszuführen (exe). Wir benötigen aber zusätzliche Berechtigungen für die Applikation in der applikation.xml:

<supportedProfiles>extendedDesktop</supportedProfiles>

Diese Anweisung zwingt uns jetzt aber auch das Packing Script umzustellen. Wir brauchen ab jetzt einen Native Installer. Dazu ändern wir nur die set AIR_FILE Zeile im PackageApplikation.bat.

set AIR_FILE=-target native sunriseimagescr.exe

Wir haben nun die Möglichkeit die Exe in eine SCR (Screensaver) umzubenennen und dann in Windows zu registrieren. Hierzu verwende ich ein zusätzliches Script (install_saver.bat). Dieses Script könnte jetzt plattformspezifisch anders aussehen.

@echo off
set SCRFILENAME=%~dp0imagescr.scr
copy imagescr.exe imagescr.scr
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "%SCRFILENAME%" /f
rundll32.exe desk.cpl,InstallScreenSaver "%SCRFILENAME%"

Hier muss noch eine IF rein um abzuprüfen welches System wir haben (winxp,win7).

Nach Installation des Screensavers wir dieser automatisch ausgeführt (Standardaktion bei AIR Installation). Wir nutzen dieses Feature nun aus und fragen, ob die SCR Datei bereits besteht. Wenn ja, führen wir den Screensaver mit entsprechenden Parametern aus. Wenn nein, führen wir das Script aus. (Wir hören auf den Invoke)

var file:File = File.applicationDirectory.resolvePath("screensaver.scr");
if (file.exists) {
	NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvokeEvent);
} else {
	if (NativeProcess.isSupported) {
		//we have to execute the bat with with cmd.exe as commandinterpreter
		var bat:File = File.applicationDirectory.resolvePath("install_saver.bat");
		var cmd:File = new File("C:\\WINDOWS\\system32\\cmd.exe");
		var npi:NativeProcessStartupInfo = new NativeProcessStartupInfo();
		npi.executable = cmd;
		npi.workingDirectory = File.applicationDirectory;
		var args:Vector.&lt;String&gt; = new Vector.&lt;String&gt;();
		args[0] = "/c";
		args[1] =  bat.nativePath;
		npi.arguments=args;
		proc = new NativeProcess();
		proc.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onOutputData);
		proc.start(npi); //
 
		//finally we exit the application and wait for the real screensaver call
		NativeApplication.nativeApplication.exit();
	} else {
		throw new Error("no native process support");
	}
}

Wiederum könnte der Code plattformabhängig modifiziert werden.

Seperater Installer für AIR

Wir brauchen die Runtime von Adobe AIR auf dem Zielsystem: http://get.adobe.com/de/air/

Es ist möglich, beim Installer Adobe AIR mitzuliefern. Dazu muss man aber die direkte Erlaubnis von Adobe haben: http://www.adobe.com/de/products/air/runtime_distribution1.html

Ich hab den Adobe Weg noch nicht versucht. Hat hier jemand Erfahrung damit?

Deinstallieren…

…Ist auch ein Problem für sich. Die Deinstallation funktioniert zwar einwandfrei mit dem Uninstaller von AIR, leider bleibt aber so die Referenz in der Registry. Hierfür benötigt man eine separate BAT-Datei. Die auch noch die SCR entfernt.

Eine Lösung wäre übrigens auch, den Adobe Installer in einen separaten Installer zu packen und darüber den Installations- und Deinstallationsprozess zu managen.
http://www.actionscript.org/forums/showthread.php3?t=171190

Projektdateien

imagescr-0.1

Referenzen


* Die HWND-Eigenschaft (auch: Handle) gibt eine Zugriffsnummer für ein Formular oder Steuerelement zurück, d. h. ein eindeutiger ganzzahliger Wert, der von der Betriebsumgebung definiert wird und von einem Programm verwendet wird, um ein Objekt zu kennzeichnen und zu einem Objekt zu wechseln.

Max Script: AnimationReTimer

09.08.2011 von David Fritsche

Da es öfters vorkommt, dass man mehrere animierte Objekte in einer gewissen Reihenfolge animieren möchte (z.B. bei Auf- oder Abbauanimationen) habe ich vor einiger Zeit mal ein Script geschrieben welches ich nun teilen möchte.

Louis Marcoux hat auf seinem Blog ganz schön beschrieben wie man so ein Script selber programmieren kann: Reveal Techniques

Ich habe einen ähnlichen Ansatz allerdings mit einer kleinen Änderung welche mehr Dynamik und Flexibilität ermöglicht.

AnimationReTimer

Die Idee ist, dass sich jedes dieser Objekte an einem (oder mehreren) “Timer-Objekt” orientiert und zwar abhängig von der Distanz. Kommt also dieses Timer-Objekt in die Nähe eines anderen Objekts fängt dieses seine Animation an.
Somit kann ich jedes dieser Objekte frei animieren (alle mit der selben Animation wie im Video-Tutorial, aber auch jedes Objekt mit einer einzigartigen Animation).
Die Keys dieser Animation werden dann durch das Script einfach nur verschoben.

Objecs [Add] [Remove]
Timer-Objekt(e) hinzufügen.
Timer-Objekte sollten mindestens zwei Key-Frames haben (z.B. Start- & Endposition). Wird also ein Timer-Objekt durch ein Noise-Controller gesteuert sollten trotzdem (irgendwelche) Keyframes existieren, damit das Script weiss wann die Animation anfängt bzw. aufhört.

Animation Reference
Animation fängt an <-> hört auf wenn Timer-Objekt am nächsten ist.

Distance Reference
Distanz zum Timer-Objekt wird am
Anfang <-> Ende der Animation gemessen.
Nur sinnvoll wenn sich Objekt bewegt.

Delay
Ganze Animation verzögern (Frames).

Accuracy
Genauigkeit der Berechnung um diese zu beschleunigen. Eignet sich wenn das Skript auf sehr viele Objekte angewendet wird (höherer Wert = schnellere & ungenauere Berechnung).

Lazy Animation
Objekt kann auch vom Nachbar-Objekt aktiviert werden. Dieser Wert steuert den Zeitverzug. Timer-Objekt kann somit eine Art Welle erzeugen.

Distance Dependent
Wenn Aktiv wird Objekt nur vom nächsten Timer-Objekt aktiviert ansonsten kann es unabhängig auch vom Nachbar-Objekt aktiviert werden (je nach Wert von “Lazy Animation”).

RETIME!
Alle selektierten Objekte werden “Retimed”.

Installation:
Script einfach per Drag-and-Drop ins Fenster schieben.
Tool (AnimationReTimer) findet man bei der Kategorie “Animation-Tools”.

Download

.. hoffe das Script hilft euch wie es mir schon oft geholfen hat!

Hier ein kleines Tutorial:

… und noch eine weiteres Beispiel:

Die Suche nach dem neuen CMS – Teil 5 – contao

05.08.2011 von Gebhard Nigsch

Hier geht es nun um eine kurze Analyse des open source CM-Systems contao.
Bitte beachtet, dass diese Analyse das CM-System nicht in der Tiefe behandeln kann.

Version: 2.9.5
Website: contao.org

Installation
Auch hier wird man bequem mit einem Wizard durch die Installation geführt.

Usability
Das Interface hat mir sehr gut gefallen, da einem sofort klar ist, wie das ganze zu bedienen ist.

Pros

  • Einfach durch Plugins erweiterbar
  • Sehr übersichtliches User-Inferface
  • Auch hier existiert eine recht grosse Entwickler-Community
  • Es exisitert ebenfalls eine grosse Deutsche Community
  • Verschachteln von verschienden Inhalten ist ohne Probleme möglich
  • Mit dem Formular-Generator lassen sich ganz einfach komplexe Formulare generieren

Contras

  • Nur ein Lead-Entwickler
  • Das verwalten mehrsprachiger Inhalte ist nur mit sehr, sehr viel Aufwand möglich
  • sehr viele Mysql-Selects

Fazit
Auch hier werden alle in Teil 1 beschriebenen Anforderungen durch das System selbst, oder durch Plugins erfüllt.
Das System selbst finde ich sehr übersichltich. Was auffällt, wenn man den Debug Modus aktiviert, dass im Hintergrund extrem viele Mysql-Selects ausgeführt werden.
Eine mehrsprachige Seite muss mit separaten Inhaltsbäumen aufgebaut werden. Die Übersichtlichkeit geht hier bei vielen Menüpunkten ganz schnell verloren.

Alle Artikel