Mittwoch, 14. Juni 2017

Schulungs- & Consulting-Termine 2017

Die Nachfrage bezüglich Consulting vor Ort und andere "Programmierhilfen" steigt momentan fast Täglich - was mich sehr freut!

Hierbei geht es von kurzer Hilfe per Skype & TeamViewer bis zu mehrtägigen Schulungen oder Programmieraufträgen.

Vielleicht liegt es an der neue Delphi-Version oder an den kommenden Veränderungen. (iOS 11)

Ich würde daher im 3. oder 4. Quartal - bei einer entsprechenden Teilnehmeranzahl - jeweils eine mehrtägige Schulung anbieten.


Selbstverständlich - wie man es von Mir mittlerweile erwartet - dreht es sich hierbei um Firemonkey.

Aber was ist mit der VCL?


Sourcecode welcher "für" VCL geschrieben ist, wird in der Regel nicht Plattform unabhängig sein, Sourcecode der jedoch für "FMX" geschrieben ist, kann normalerweise ohne Veränderungen auch für VCL-Programme compiliert werden.


Daher braucht man bei non-UI Dingen eigentlich keinen Unterschied machen... Um soliden, testbaren Sourcecode zu schreiben braucht man eigentlich nur folgendes Handwerkszeug: Linken gegen Interfaces, untereinander nicht verlinkte Units und Unittest...


daher:


Die Themen sind die üblichen Verdächtigen:
- Designpattern
- Interfaces
- Unit-Test.
- Threading
- REST / JSON


Darüber hinaus wird immer wieder gefragt:
- Wie mache ich was?
- Mache ich das eigentlich richtig?
- Geht das nicht einfacher?
- MVVM oder Klick-aufs-Form


Frei nach dem Motto: "Usen ist schneller als coden" erhält jeder Teilnehmer mein FDK.




Termine und der Veranstaltungsort stehen noch nicht fest, aber bei Interesse bitte unbedingt vorab schon mal eine E-Mail an mich schreiben mit dem Betreff "Schulungstermine"

Montag, 22. Mai 2017

Hype Driven Development.

Wer kennt das nicht? Man(n) kommt von einer Tagung oder hat ein cooles YouTube Video gesehen. Dann passiert es - Das muss ich auch machen...
 
Gut oder schlecht... (Wenn man einige Blogs zu diesem Thema liest ist die Meinung: eher schlecht)
 
Klar kann man noch mit Delphi 7 mit dem Sprachumfang von UCSD-Pascal programmieren. Eigentlich spricht da nix gegen, oder?
 
Hey, die Programme laufen und machen das, was die Kunden wünschen - also alles bestens, oder? Viele betreiben so die eigene Firma und verdienen ihr Geld... Also kann es ja nicht schlecht sein!
 
Aber sollte man nicht hin und wieder über den Tellerrand schauen? Der Satz: "Wir haben das doch immer so gemacht.", wird oft benutzt.
 
Eigentlich sind doch Programme nie fertig. Es immer mal ein neues Feature eingefügt oder eine Funktionalität verbessert. I.d.R. alles single-Thread, Main-Thread...
 
Ist das Programm überhaupt noch wartbar? Sollte man mal das Layout überarbeiten, vielleicht das Menü auf Ribbon umstellen oder eine Datenbank verwenden? Die Geschwindigkeit mit Threads verbessern?
 
Vielleicht hilft ein Hype den Sprung zu schaffen... Klar gibt es dann immer eine Lernkurve, aber ist das den so tragisch? Den alten Kopf mal wieder auf "Klassenarbeit steht an", Niveau bringen... 
 
Oft habe ich bei Schulungen oder Tagungen diese Sätze gehört:
 
  • Interfaces - Ja hab ich schon mal gehört, nutzen wir aber nicht.
  • Threads - ja das macht bei uns der Peter, aber der ist seit 4 Wochen krank, wenn der wieder da ist, Frag ich Ihn mal.
  • Factory's - brauche ich nicht, es geht auch so.
  • Dependency Injection - Du immer mit Deinem neumodischen Zeug.
  • Unit Tests - Wollten wir auch mal machen, steht ganz oben auf meiner Liste, aber ich bin bisher nicht dazu gekommen mir das mal an zu sehen.
  • Generics - Hab ich schon mal gehört, das ist doch das Ding mit den spitzen Klammer, oder? Ich nehme für sowas immer einen Pointer.
  • Git/Mercurial - Ist mir zu kompliziert ich zippe meinen Source einfach zusammen.
  • MVVM - Brauch ich nicht, ich kopiere den Source von einem Form in das nächste. Ich will ja auch beim Debuggen sehen, was passiert wenn ich den Button-Klicke.
  • JSON - Hab ich noch nie gebraucht, was macht man damit?


Vielleicht wäre hier ein bisschen Hype-Driven-Development angesagt...


Aber warum das Ganze? Wofür soll ich getrennte testbare Units programmieren, wenn ich sowieso keine Unit-Test mache? Sicherlich kann man sich "zu Tode entkoppeln". Ab wann ist zuviel des Guten eigentlich zuviel?

Mit MVVM, Factories  und nur gegen Interfaces linken, kann schnell zu einer Sucht werden und die IDE findet bei einem Klick auf die Variable immer nur die Factory oder das Interface, leider NIE die gerade aktuelle Implementierung. Was macht ein Klick auf den Button? Das steht da leider nur dann richtig lesbar, wenn man seine Proceduren wirklich gut benennt. Aber auch dann muss man erstmal die entsprechende Unit (ViewModel) finden, die in dieser Implementierung für diese Plattform verwendet wird.
Eine Interfacevariable wir immer nur mit dem Typen und der Adresse angezeigt - ich sehe im Debugger nicht die Belegung. (Vielleicht mal einen Visualizer programmieren?)
Einfacher wird es nicht und wenn man(n) dann noch unstrukturiert auf neue Techniken  los geht - dann ist man(n) schnell in einer Falle die alles noch viel schlimmer macht, als es vorher schon war.

Wäre das der Moment auf meine Schulungs- und Consultingangebote hin zu weisen?

Also doch nicht jeden Hype mit machen, aber sich die "neuen" Techniken rauspicken, die eine bessere Source-Code-Übersicht, besseres Laufzeitverhalten oder höhere Kundenzufriedenheit ermöglichen!


Ich muss nicht jeden Hype mitmachen - nur die Guten...

 
 

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