Mittwoch, 19. April 2017

Neue Monitore: VMWare Flicker

Neue Monitore...



Gut, mein Rechner kann gar nicht schnell genug sein... Übertaktung, Wasserkühlung, SSD RAID 10, Cache-Controler für die SSD usw.


Bei den Monitoren (3 Stk.) war ich jedoch noch auf 1920x1600. Hat mir eigentlich immer gereicht... Wenn da nicht die neue NVIDIA 1080ti gewesen wäre...


OK - Wie immer wenn man Hardware tauscht : A passt nicht zu B. Da meine alten Bildschirme noch DVI hatten aber keinen Eingang für DP, mussten also auch noch 3 neue TFT's her.


Jetzt "natürlich mit" 2560x1440 - UHD wollte ich dann doch nicht... NVidia G-Sync natürlich und/bzw. 144Hz..


Logisch das ich dann auch eine neue Umschaltbox für den Mac brauchte und einen entsprechenden Adapter... Also noch mal 100€ on top.


Die Freude war nur von kurzer Dauer...


Nativ war alles schick und die 1080ti läuft super... Aber unter VMWare - nur noch geflackert... Vom Browser, beim scrollen, wenn sich ein Fenster öffnet.. Nicht aus zu halten...


Antwort von VMWare : Ich habe keinen Support (mehr) - nur noch für die Apple Version. (Obwohl ich natürlich die immer die neuste Version kaufe). Aber ich sollte mal die 3D-Acceleration abschalten...


Damit könnte ich zur Not noch leben, Flackern ist weg... Aber mein Tan-Generator mit Flacker-Tan funktioniert nicht mehr...


Nach ein paar Tests hat sich gezeigt, es war die Einstellung des Speichers, der reserviert werden darf auf dem Host... Ein Setting von 2GB - und alles läuft.


Jetzt muss ich nur noch raus finden, wie ich Windows davon abhalte, wenn ich einen Monitor auf den Mac-Mini schalte, die Monitor Anzahl und die Position jedes mal an zu passen. PnP abschalten oder was auch immer... Sonst wird das debuggen im IPhone Simulator zum Nervenkrieg...


Ich werde berichten...

Sonntag, 9. April 2017

Windows 10 Update und Delphi 2007

Again!


Nach dem Update auf die neue Windows 10 Version - nicht vergessen aus


C:\Windows.old\WINDOWS\Microsoft.NET\Framework\v2.0.50727


Die Dateien Borland.*.Targets nach


C:\Windows\Microsoft.NET\Framework\v2.0.50727


zu kopieren...





Dienstag, 4. April 2017

ORM oder doch lieber eine Schichttrennung?

Schichttrennung?

Mit der ersten Windows-Delphi Version fingen alle an "RAD" zu programmieren...

Formular -> Möglichst viele Komponenten visuell oder auch nicht aufs Form klicken und dann immer an den "richtigen" Stellen einen Doppelklick und den Code rein... GGf. noch im OI Verbindungen von Komponente A nach Komponente B herstellen.

<F9> - No errors - ship it...

Plötzlich kommen "die Leute" mit so neumodischem Zeug wie Unittest's oder MVVM...

Also alles wieder aufdröseln und doch trennen...

Nachdem man das alles umgesetzt hat steuern "die Anderen" wieder dagegen und "erfinden" Visual-Live-Bindings also nix im Code, sondern wieder im Formular... OK - muss man ja nicht machen...

Eigentlich ist man mit sich und seinem Source-Code im Reinen.

Da ist die View, eine andere Unit ist das ViewModel, eine dritte Unit hält das DatenModel und die Datenzugriffskomponente, aber ggf. ist das auch eine weitere Unit... Vielleicht hat man für den Datenzugriff auch ein Interface genommen um überhaupt nicht gegen eine physikalische Datenbank zu linken. Good Job! Im Kreis stellen und auf die Schulter klopfen.
 
Jetzt kommt die erste Änderung.
 
Die Änderung passiert als ersten auf der Datenbankebene. Warum? Eine andere Software braucht noch ein Feld... OK... Meine Software muss das ja nicht unterstützen, oder doch? Naja, zu mindestens sollten meine Zugriffe das Feld nicht ändern oder löschen und ggf. bei einem neuen Datensatz initialisieren. Fein - meiner REST-Schnittstelle ist das egal... Darum soll sich der Server kümmern. Aber im Netz muss ich schnell meine Tabellen-Definition anpassen. Fertig... Der Rest meiner Software ist unberührt. Zum Glück muss ich nicht in 30 Formularen etwas anklicken, den die Formulare sind doof und wissen sowie so nix da von. (Gut das man beim erstellen der App's für iOS, Android und Windows daran gedacht hat, und sowie so alles per CRUD/REST/JSON implementiert hat).
 
Anpassung: Eine Unit-Datenbankdefinition und in der INSERT INTO noch das Feld initialisieren. (Wenn überhaupt nötig)
 
Bleiben wir mal bei der Datenbank definition (Um zurück zum Titel zu kommen).
 
Sollte die Datenschicht - also die Unit die einen Datensatz im Speicher hält auch verantwortlich sein für den Zugriff auf die Datenbank?
 
Momentan mache ich es so...:
 
Unit "Person.Model.pas" hat den Person-Record (also eigentlich eine Factory die ein Interface auf eine Class zurück gibt, die die Daten hält.)
Dann gibt es die Datenbank.Define.pas hier stehen die Definitionen aller Datenbanken/Tabellen, die ich in der App verwenden. Will ich die Datenbank ändern gibt es eine Unit und für die eigentlichen Daten, jeweils eine...
 
Jetzt kommen die Leute auf die Bühne die Attribute lieben und sagen: Warum soll ich das trennen, ich kann doch per Attribut in meinem DatenModel direkt angeben wie die Daten gespeichert werden sollen.. Also eigentlich genau wie bei REST/JSON hier kann ich ja z.B. wie in SuperObjects oder bei DUnitX direkt "alles" angeben...
 
Klar, hier gibt es schon fertige Packages die sowas können... Also das RAD neu erfinden?
 
Ich habe zu ORM noch eine geteilte Meinung. Deswegen habe ich auf dem letzten Delphi-Meetup die gleiche Frage gestellt... Und 10 verschiede Meinungen gehört... (Ich möchte sagen alle genannten Argument hatten ihre Berechtigung)
 
Vielleicht bilde ich mir eine Meinung, wenn ich "sowas" selber mal implementiere... Schließlich habe ich ja auch meine eigene JSON, REST Komponente, meinen eigenen XML Reader/Writer meine eigene Tethering Komponente geschrieben.
 
Also - kommt auf die Liste:
 
#Todo, #FDK, #ORM
 
Ich baue mal meinen Fluidcreator für Datenbankdefinitionen um... Mal sehen wie sich das im Source anfühlt...

Freitag, 31. März 2017

FMX & Styles

FMX und Styles

OK, ein Stylebook auf ein Formular zu klicken ist ja nun kein Problem und dann?

Es gibt Leute, die haben sich extra ein Android-Handy gekauft, weil Ihnen das iOS zu "bund" oder was auch immer war... (oder auch anders herum).

Jetzt nimmt man einen Style - und alles sieht anders aus. Verärgert man damit seine Nutzer?

Für einen CI-Style sprechen sicherlich genau so viele Argumente, wie für einen nativen Plattform-Style.

Aber ist es den so einfach einen Style für alle Plattformen zu verwenden? Eigentlich schon...
Wäre da nicht das Problem, dass die mitgelieferten Styles - Handmade - sind. Daher sind die Grafiken leider nicht deckungsgleich. Bedeutet?

Alle Angaben der Regionen aus dehnen die einzelnen Style-Elemente herausgenommen werden sind unterschiedlich. Also muss man die für alle Plattformen anpassen?

Ich muss zugeben ich habe noch nicht alle Einzelheiten aller Plattformen verglichen - weil es hier pro Plattform noch Besonderheiten gibt... Als der Teil ist noch WIP.

Aber mein Ansatz war folgender:

Ich erzeuge über den Bitmap Style-Designer alle Default-Styles und speichere mir die Bezeichnungen:

AndroidL Light
[ANDROID][ANDROIDL][LIGHTSTYLE][DEFINEFONTSTYLES]
iOS7Alternate
[IOS][IOSALTERNATE][IOS7][DEFINEFONTSTYLES]
Windows 10 Modern
[MSWINDOWS][MODERN][DEFINEFONTS][DEFINEFONTSTYLES]


Dann nehme ich den Windows 10 Modern Default Style als Basis. Alle Plattformen nähern sich sowieso diesem Style... ;-)

Dann noch Icon suchen/erzeugen/von freien Quellen laden... Leider gibt es keine Size/Position-Hilfe im Styledesigner. Außerdem wollte ich auf keinen Fall die Icons in 4 Auflösungen per Hand zusammenklöppeln... Hierfür also schnell ein kleines Programm geschrieben, dass die Icons in immer gleichbleibender Reihenfolge laden und in die PNG's speichern kann. Und die Auflösung 1.0 noch mit einem Grid versehen. So fällt das "rechteckziehen" leichter.

Dann noch das SpeedButton-Style-Object im Style oft genug kopieren und alles zuweisen...

Und schon hat man seinen Style - der auf allen Plattformen funktioniert.
Die richtigen Größen der Elemente erzeugt mein FDK, hierum brauchte ich mich also nicht kümmern. Fertig sieht es dann so aus...

Es gibt im FDK noch eine Funktion die aus jeder Grafik, einen klickbaren Button mit Schatten und Pushdown-Animation machen kann. Somit hat man die Option entweder den Button nativ zu verwenden (Toolbar, oben) oder als Klickdown-Button (Leiste unten) besonders klasse finde ich den Effekt bei transparenten PNG's.

 
Die fertige App sieht das auf allen Plattformen so aus: Ok, die Schatten sind ein Style-Bruch und werden in der Store-Version wahrscheinlich noch rausfliegen.
 
 
So einfach kann es gehen - und ich habe hierfür nur eine Woche gebraucht. ;-)
 
Warum eine Woche? Bis alles so gepasst hat wie ich es mir vorstelle und das ganze zusammenklicken mit der Maus im Bitmap-Style-Designer war halt einfach viel Arbeit. Nochmal mache ich das so nicht. Nächster Schritt ist ein Style-Creator der diese unnötigen arbeiten automatisch macht... (Ich habe mich ja auf Button beschränkt) Hätte ich die anderen Elemente auch noch erzeugen/ändern müssen wäre es wahrscheinlich ein Monat geworden. Das FMX-Style-Format ist ja so ähnlich wie DFM/FMX/TXT aber ich hatte einfach noch keine Zeit hierfür eine Routine zu schreiben... Ich hoffe noch an den Source für den Bitmap-Style-Designer zu kommen und einfach diese Software zu erweitern... Anfrage läuft. 
 
Wie gesagt WIP...
 


Sonntag, 5. März 2017

In das MVP Programm aufgenommen...


In das MVP Programm aufgenommen...


Meine Bemühungen Delphi und Firemonkey weiter zu bringen sind wohl nicht unbemerkt geblieben,
daher freue ich mich, dass ich heute als

 
aufgenommen wurde.
 
 
The MVP-Directory is updated (05.04.17)

 

Montag, 27. Februar 2017

Vortrag zu FMX in Holland

Ich freue mich auf den Event in Holland zu dem mich Bob Swart eingeladen hat.

Hier bietet sich nicht nur die Gelegenheit wieder mal einen FMX Vortrag zu halten, sondern auch mein FDK vorzustellen.

Es ist schön zu sehen, dass meine Aktivitäten über die Grenzen hinaus Anklang finden...

Freitag, 17. Februar 2017

Для моих русских читателей.

Привет мои русские друзья!

Моя статистика говорит, что многие из русскоязычных стран посещают мой блог меня. Может быть, я хочу контакт, который говорит на немецком или английском и помочь мне с переводом моих текстов.

спасибо

Google-Translated...