Donnerstag, 27. April 2017

FDK - Early-Bird

Die Stunden für eine Early-Bird-Bestellung des FDK's sind angebrochen.


Wer also noch die 100,- € sparen möchte, sollte jetzt das Angebot noch nutzen.


Ab den 01.05.2017 gilt der volle Preis...

Datenschutzerklärung

Datenschutz

Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.

Kommentarfunktion auf dieser Webseite

Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.

SSL-Verschlüsselung

Diese Seite nutzt aus Gründen der Sicherheit und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel der Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von "http://" auf "https://" wechselt und an dem Schloss-Symbol in Ihrer Browserzeile.
Wenn die SSL Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.


Quelle: https://www.e-recht24.de


Weitere Informationen zum Datenschutz von Blogger: https://www.google.com/intl/de/policies/privacy/

Impressum

Angaben gemäß § 5 TMG:

Frank Lauter
Hostetstr. 153
52223 Stolberg (Rhld.)

Kontakt:

Telefon: 02402 / 90 55 264
Telefax: 02402 / 90 55 265
E-Mail: Frank@delphiprofi.de

Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:

Frank Lauter
Hostetstr. 153
52223 Stolberg (Rhld.)



Quelle: https://www.e-recht24.de


Weitere Informationen zum Impressum von Blogger : https://www.blogger.com/intl/de_de/impressum.html

Haftungsausschluss (Disclaimer)

Haftung für Inhalte

Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.

Haftung für Links

Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar.
Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.

Urheberrecht

Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.
Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.

Datenschutzerklärung

Datenschutz

Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.

Kommentarfunktion auf dieser Webseite

Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.

SSL-Verschlüsselung

Diese Seite nutzt aus Gründen der Sicherheit und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel der Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von "http://" auf "https://" wechselt und an dem Schloss-Symbol in Ihrer Browserzeile.
Wenn die SSL Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.


Quelle: https://www.e-recht24.de
Plattform der EU-Kommission zur Online-Streitbeilegung: www.ec.europa.eu/consumers/odr

Dienstag, 25. April 2017

Unittest with Testinsight.

TestInsight is a unit testing IDE Plugin for Delphi from Stefan Glienke - but I think you already knew that! @Stefan:Usefull Tool!

I've used Unit-Test (the GUI-Version) for a long time, because I like to have the GUI. The console-output is of course better if you are using a batch to compile and test your application.

For my Firemonkey Development Kit, I tried DUnitX the first time, but - to be honest - Oliver has done this step. The missing GUI was always my breakpoint. :-)

One of my rules is: If I start a new Application, I try to use at least one new technique or one of the 4-Letter-Things (CRUD,REST,JSON,MVVM).  But this list was empty (for the moment). So DUnitX came back in view...

I heard about TestInsight ist the past, but never gave it a try. For my knowledge it was "only" an other GUI for the Testframework - so no need to take a look.

But one feature <F2> is the best I've seen for many years to speed up development.

Testdriven development is - not so common, I've learned on many events, talking to other developers - but I like this kind of development, especially when implementing new businesslogics.

The Feature is - Run Test on save.

Take your Projekt, add a Testprojekt to the Group, mark it as TestInsight and go on with your development. If you are ready with the Interface - we all code against Interfaces - implement all tests you what to cover. Then back to your main Application. On every Save - all tests run in background.

E.g.: Array[Index] is higher then High(Array) the Test will find it after the next save... No breaks in the development flow. Go and write Array[Index-1] - save - Success...

Next Step - run DUnitX on Android and iOS.. Should work anyway - Not tested yet.






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...