Archiv für Juni 2009

K2 Blackpearl Gotchas

Dienstag, 30. Juni 2009

Hier mal einige Erfahrungswerte aus der Entwicklung mit K2 Blackpearl in ungeordneter Reihenfolge:

  • SmartObjects sind innerhalb von K2 und den Designern typisiert, will man aber über Code darauf zugreifen, wird jede Eigenschaft als String übergeben. Hierbei wird die auf dem Server eingestellte Kultur genutzt. Deshalb muss man bei Dezimalzahlen darauf achten, wenn man mit diesen weiter rechnen will.
  • Fast alle Namen im K2-Umfeld (SmartObjects selbst, ihre Methodennamen sowie Ihre Eigenschaften, …) haben einen technischen Namen und einen Display-Name. In allen Tools wird der Display-Name angezeigt, für eigenen Code benötigt man aber den technischen Namen.
  • Der Change-Compile-Deploy-Test-Zyklus ist lang. Hier hab ich zwei Ansätze: Während der Entwicklung an einer Stelle den Folie auf die ProcessID setzen und dann auf Asynchron schalten. Dann von extern (z.B. Konsolenapplikation) die Prozess-Instanz holen und damit rumhantieren und erst wenn der Code das tut, was er soll, wird er in das Server-Event kopiert. die zweite Variante ist, Server-Events klein zu halten, in dem aus ihnen nur Code einer DLL aufgerufen wird. Diese DLL entwickelt man separat. So ist auch das Testen einfacher.
  • Ich hatte während der Entwicklung 2-3 mal das Vergnügen, dass mein kompletter Prozess auf einen älteren Stand “zurückmutierte”. Ich kann es nicht gezielt reproduzieren, aber ich glaube, es hat mit dem Öffnen mehrerer Instanzen vom Visual Studio zu tun. Komischerweise konnten sowohl SVN wie auch die eingebaute Versionierung des K2-Servers meinen letzten Stand nicht zurück holen.
  • Simple InfoPath-Formulare gehen schnell von der Hand, komplexe dauern dagegen länger als die komplette Entwicklung eines eigenen Formulars mit ASP.net. Es ist auch einfacher, das Formular-XML in einem Server-Event vorzubereiten, als die Webservices im Infopath zu nutzen.
  • SmartObjects sind langsam! Ein kurzer Test zeigte, dass jede Methode, die den SmartBoxService nutzte, jeweils rund 0,4s benötigt. Ein über einen ServiceBroker angebundenes CRM hatte sogar Zeiten von rund 0,6s. So dauert das Sammeln aller nötigen Daten für ein Formular auch schon mal 5-10s. Hantieren mit Prozessinstanzen von externem Code aus geht hingegen super schnell.

Aber kennt man erst einmal alle Fallstricke, macht die Entwicklung mehr Spaß und geht auch schneller von der Hand!

Verkaufe Audi A4 BJ.95, 101PS, CarPC

Montag, 29. Juni 2009

Heute mal was ganz anderes!

ich verkaufe meinen Audi A4 mit integriertem CarPC!

Auto
- 199 Tkm
- Baujahr 95
- Einige Kratzer im Lack
- Unfallfrei
- Tüv/AU bis 02/11, frischer Ölwechsel
- Batterie ist neu 11/08
- getönte Scheiben
- Schiebedach, leider keine Klima
- schafft locker 180 km/h
- Auspuff ist etwas laut, da muss wohl was gemacht werden
- Alufelgen und Winterreifen

CarPC
- MiniATX in Holzbox im Kofferraum
- guter Soundkarte von Creative
- 7" Touch vorne in die Mittelkonsole integriert
- 80GB Notebook HDD
- Verstärker mit 4x 150W hängt dran
- Bassbox im Kofferraum
- LS in den vorderen Türen getauscht
- USB GPS Empfänger mit Sirf 2

Standort: Hamburg (Versand ausgeschlossen)

Wer ein Interesse verspürt, der schreibt mit seine Handynummer (oder besser Festnetz) in einer E-Mail an Fabse -at- Fabse -Punkt- net und ich ruf ihn an. Kann nur Abends.

Die Zeit drängt, wenn sich keiner meldet, werde ich am Wochenende den ganzen CarPC mit Anlage ausbauen, denn der Händler interessiert sich dafür nicht.

Meine Preisvorstellung sind 900 Euro. (Der Händler hat mir 700 geboten und ich denke meine Komponenten und die ganze Arbeit sind 200 wert.) Das wäre natürlich ein Privatverkauf ohne Garantie/Rückgabe.

 

audi1

audi2

 

Das ist der Touchscreen in der Mittelkonsole, bekomme leider kein gutes Foto hin… (MM400, 7 Zoll, Auto-On):

Touchscreen in der Mittelkonsole

Excel: Letzter Wert eine Datenzeile

Montag, 29. Juni 2009

Ich schreibe immer wieder Werte untereinander in einer Excel-Tabelle und interessiere mich für den letzten gesetzten Wert dieser Zeile. So geht’s:

=VERWEIS(2;1/(A:A<>"");A:A)

Wobei A:A die Zeile A ist, auf die diese Formel wirkt. Das ist übrigens die Frank Kabel – Lösung.