| Lautsprecher |
Transkript |
| Wayne Levin |
Willkommen zu unserer Sitzung hier zur Erweiterung des automatisierten Hamcrest-Tests von JSL-Anwendungen zur kontinuierlichen Verbesserung. |
| |
Was wir Ihnen hier zeigen werden, ist unser Versprechen an Sie, wir werden Ihnen zeigen, wie auch Sie eine produktive und kostengünstige |
| |
Hohe Qualitätssicherung, hochzuverlässige und wartungsfreundliche JMP-basierte unternehmenskritische integrierte Analysesysteme. Ja, das ist viel zu sagen, aber das ist |
| |
Genau das tun wir in diesem Umfeld. Wir sind sehr zufrieden damit. Es ist uns eine große Ehre, es mit Ihnen teilen zu können. |
| |
Hier ist also die Tagesordnung, der wir hier folgen werden. Ich werde mich gleich kurz vorstellen und kurz etwas über Predictum erzählen, da Sie vielleicht noch nicht so viel über uns wissen. |
| |
unser Hintergrund, der Hintergrund unserer JSL-Entwicklung, Infrastruktur, ein bisschen Geschichte, die damit zusammenhängt. |
| |
Und dann möchten wir Ihnen die Ergebnisse der von uns vorgenommenen Änderungen vorstellen. Anschließend führen wir eine Demonstration durch und sprechen über unsere nächsten Schritte und Pläne für die Zukunft. Abschließend stellen wir Ihnen Ihre Fragen. |
| |
Ich bin Wayne Levin, das bin ich hier rechts. Ich bin der Präsident von Predictum und gehöre zu |
| |
Mit Vince Faller. Vince ist unser leitender Softwareentwickler und leitet diese wichtige Initiative. Hier ein paar Informationen zu uns: Wir sind JMP-Partner. |
| |
Wir sind 1992 gestartet, also 29 Jahre alt. |
| |
Wir bieten Schulungen zu statistischen Methoden usw. an, verwenden JMP, beraten in diesen Bereichen und verbringen sehr viel Zeit mit dem Aufbau und der |
| |
Bereitstellung integrierter analytischer Anwendungen und Systeme. Deshalb war uns dieser Aufwand sehr wichtig. Wir lieferten zunächst die JMP-Anwendung mit |
| |
JMP 4.0 kam im Jahr 2000, also vor über 20 Jahren, und wir haben größere Systeme entwickelt. Natürlich waren es damals noch zu kleine Tools, aber ich glaube, wir haben mit JMP 8 oder 9 angefangen, größere Systeme zu entwickeln. |
| |
Wir haben diesbezüglich eine ziemlich lange Geschichte, locker über 10 Jahre. Nur ein bisschen Hintergrund: Bis etwa zur zweiten Hälfte des Jahres 2019 war unsere Entwicklungsumgebung sehr heterogen und bruchstückhaft. |
| |
Projektmanagement |
| |
Es gab zwar etwas, aber auch hier war alles irgendwie zersplittert. Wir hatten verschiedene Anwendungen für die Versionskontrolle und das Zeitmanagement, also für die Zeit unserer Entwickler und so weiter, und ganz allgemein für das Projektmanagement. |
| |
Entwickler gaben leicht Geld aus, und wir werden darüber sprechen, |
| |
Etwa die Hälfte ihrer Zeit verbringen sie mit Routineaufgaben wie dem Verschlüsseln und Verpacken von JMP-Add-Ins. Sie wissen schon, mit der Pflege von Konfigurationspaketen und … |
| |
Und die Trennung der Repositories, oder wie wir sie allgemein nennen, für verschlüsselte und unverschlüsselte Skripte. Es gab vieles, worüber wir nachdenken mussten, was nicht wirklich Entwicklungsarbeit war. Es war wirklich Arbeit, die |
| |
Entwicklertalent wurde verschwendet. Wir hatten, wie gesagt, schon lange damit zu tun, selbst im Jahr 2019, also locker 10 Jahre, also über 10 Jahre altes Framework, das bis zu JMP 5 zurückreicht, wissen Sie, und es wurde aufgebläht und langsam. |
| |
Und wir wissen, dass JMP im Laufe der Jahre einen langen Weg zurückgelegt hat. Ich meine, in JMP 9 haben wir Namespaces eingeführt und in JMP 14 wurden Klassen eingeführt, und dann kam Hamcrest |
| |
begann. Und es war Hamcrest, das uns diese große Initiative ermöglichte. Wir starteten diese Initiative im August 2019. |
| |
Und zu diesem Zeitpunkt haben wir unsere ersten Gitlab-Lizenzen erworben und die Entwicklung unserer neuen ... die Entwicklung unserer neuen Entwicklungsarchitektur, da haben Sie es, begann Gestalt anzunehmen und wird seitdem immer besser. |
| |
Im Grunde haben wir jeden Monat unsere Fähigkeiten erweitert und ausgebaut, um im Laufe der Zeit immer produktiver zu werden. |
| |
Und das geht weiter, sodass wir dies, wenn man so will, tatsächlich als eine Art Lean-Initiative betrachten. Es folgt tatsächlich den Lean-Prinzipien und hat unsere Entwicklung beschleunigt. |
| |
Dank dieses Systems haben wir automatisierte Tests, und Vince wird es uns zeigen. Und wir haben dieses kleine Modell hier: Früh testen und oft testen |
| |
Und genau das tun wir. Es unterstützt die Wiederverwendung von Code, und wir haben unser Predictum-System-Framework weiterentwickelt. Es liegt jetzt in der Version 2.0 vor. Wir haben viel aus unseren früheren Bemühungen gelernt. All das ist weg, so gut wie alles, und es wurde ersetzt und erweitert. |
| |
Und Vince wird uns mehr darüber erzählen. Wir haben unsere Produktivität um locker über 50 % gesteigert, und ich kann nur sagen, die Entwickler sind viel zufriedener und weniger frustriert. |
| |
Sie konzentrieren sich mehr auf ihre Arbeit, also auf die eigentliche Arbeit, die Entwickler erledigen sollten, und nicht auf die langweiligen Dinge. |
| |
Ich würde sagen, es gibt noch Raum für Verbesserungen, wir sind also noch nicht fertig und Vince wird uns mehr darüber erzählen. |
| |
Wir verfügen jetzt über Entwicklungsstandards und haben Stilrichtlinien für Funktionen. Man könnte sagen, dass unsere gesamte Entwicklung auf Funktionen basiert. |
| |
Jede Funktion erfordert mindestens einen Hamcrest-Test, und es gibt Code-Reviews, die die Entwickler untereinander austauschen. |
| |
um sicherzustellen, dass wir unsere Standards einhalten. Und es wirft Fragen darüber auf, wie wir diese Standards verbessern können. |
| |
Wir haben auch diese Art von Spaß-Sessions, bei denen Entwickler ermutigt werden, Code zu brechen, |
| |
Richtig, sie heißen so etwas wie „Break Code Challenges“ oder so ähnlich. Das ist Teil unserer Vorgehensweise geworden und passt perfekt in diese Entwicklungsumgebung. Es führt beispielsweise dazu, dass weitere Tests, weitere Hamcrest-Tests, hinzugefügt werden. Wir haben ein kleines, relativ kleines Projekt |
| |
das haben wir vor etwas mehr als einem Jahr getan. Wir gehen in eine neue Phase. Es ist schon lange vorbei... |
| |
Weit über 100 Hamcrest-Tests sind darin integriert und werden während des Entwicklungsprozesses immer und immer wieder ausgeführt. |
| |
Ein weiterer Vorteil ist, dass wir unsere Ressourcenzuweisungen zuweisen und verfolgen können, z. B. welche Entwickler welche Aufgaben haben. Jeder weiß, was die anderen tun. |
| |
kontinuierliche Integration, kontinuierliche Bereitstellung, so etwas), |
| |
Codekollisionen werden frühzeitig erkannt. Wenn also … und das tun wir. An manchen Projekten arbeiten mehrere Leute. Wenn also jemand hier eine Funktion ändert und diese mit der Arbeit eines anderen kollidiert, werden wir das viel früher herausfinden. |
| |
Es ermöglicht uns auch, die Unterstützung durch mehrere Mitarbeiter zu verbessern. Wir können keinen Code haben, der von einem bestimmten Entwickler abhängig ist; wir brauchen Code, den jeder Entwickler oder Supportmitarbeiter unterstützen kann. |
| |
voran. Das war auch ein wichtiges Ziel von uns. Und es bringt den gesamten Bereich der Qualitätssicherung im Allgemeinen voran. |
| |
Dazu gehören die Unterstützung der FDA-Anforderungen, die Qualitätssicherung, Validierung, IQ, OQ, PQ. Wir automatisieren oder halbautomatisieren |
| |
Diese Aufgaben werden auch über diese Infrastruktur abgewickelt. Wir nutzen sie intern und extern. Wie Sie vielleicht wissen, haben wir |
| |
einige Produkte da draußen, (???) Kobe Sash Lab, aber neue Spam, na ja, Kobe sendet Spam (???), darüber wird auch anderswo gesprochen |
| |
auf der JMP Discovery European Conference im Jahr 2021. Vielleicht möchten Sie sie sich ansehen, aber sie sind ziemlich groß |
| |
Codebasen und sie sind alle entwickelt, mit anderen Worten, wir essen unser eigenes Hundefutter, wenn Sie diesen Ausdruck kennen, aber wir verwenden ihn auch mit allen unseren Client |
| |
Entwicklung, das ist etwas, das unseren Kunden wichtig ist, weil wir Anwendungen erstellen, von denen sie abhängig sein werden. |
| |
Und deshalb müssen wir... wir müssen über die Infrastruktur verfügen, die es uns ermöglicht, zuverlässig zu sein, und das ist jedenfalls ein großer Teil davon. |
| |
Ich habe das Predictum-System-Framework erwähnt. Sie können hier einige Ausschnitte davon sehen. Es befindet sich direkt im Skript-Index, und wir sehen die Argumente und die |
| |
Beispiele und all das. Wir haben all das integriert, und 95 %, über 95 % davon sind mit Hamcrest-Tests verknüpft. Unser Ziel ist es natürlich, sicherzustellen, dass alle dies tun, und wir sind auf dem Weg dorthin. |
| |
Wir kommen voran. Dieses Framework ist Teil unserer Infrastruktur. Es ist eines der wichtigsten Elemente. Ein weiteres ist Hamcrest. |
| |
die Möglichkeit, Unit-Tests durchzuführen. Und ich werde... am Ende gibt es eine Folie, die Ihnen einen Link zur Community gibt, wo Sie mehr über Hamcrest erfahren können. Dies ist ein |
| |
Entwicklung, die uns JMP bereits in JMP 14 ermöglicht hat, wie ich vor einigen Minuten erwähnt habe. Gitlab ist ein wichtiger Bestandteil davon; es stellt uns das Projektmanagement-Repository, die CI/CD-Pipeline usw. zur Verfügung. |
| |
Und es gibt auch eine visuelle... Visual Studio Code-Erweiterung für JSL, die wir erstellt haben, und wir würden... Sie sehen dort fünf Sterne, weil sie fünf Sterne auf der |
| |
im Visual Studio. Ich bin mir nicht sicher, wie wir das nennen. Vince, vielleicht kannst du uns sagen, was der Store ist und so weiter. Es wurde hunderte Male heruntergeladen und wir waren |
| |
Wir aktualisieren es regelmäßig. Das können Sie auch nachschauen. Ich glaube, wir haben auch einen Link dazu auf der Ressourcenfolie am Ende. |
| |
Ich übergebe jetzt an Vince Faller. Vince ist unser leitender Softwareentwickler. Er leitete diese Initiative, wie bereits erwähnt, seit August 2019. Es war viel harte Arbeit und |
| |
Die harte Arbeit geht weiter. Wir alle im Unternehmen sind Vince und seiner Führung sehr dankbar. Also, Vince, warum übernimmst du nicht von hier aus? Ich werde... |
| |
Ich bin... |
| Vince Faller |
Teilen. |
| |
Wayne erwähnte Hamcrest also mehrmals. Für alle, die Hamcrest nicht kennen: Es handelt sich um ein Add-In von |
| |
JMP. |
| |
Justin Chilton und Evan McCorkle haben es geleitet. Es handelt sich lediglich um eine Unit-Test-Bibliothek, mit der Sie die Tests automatisiert ausführen und Ergebnisse abrufen können. |
| |
Dadurch wurde der Stein ins Rollen gebracht, der uns überhaupt dazu in der Lage machte, daher auch der Name „Erweitern“. |
| |
Ich werde ein paar Sachen zeigen |
| |
mit meinem Bildschirm. Ich arbeite fast ausschließlich mit der von uns entwickelten VSCode-Erweiterung. Das ist VSCode. |
| |
Wir tun dies, weil es viele integrierte oder erweiterbare Funktionen hat, die wir nicht schreiben müssen, wie z. B. „Get-Integration“ oder „Get-Lab-Integration“. |
| |
Hier können Sie sehen, dass es sich um ein JSL-Skript handelt und es problemlos gelesen wird. |
| |
Wenn Sie es haben möchten, wenn Sie ... wenn Sie mit VSCode vertraut sind, ist es nur ein einfacher Texteditor. Sie geben einfach JMP ein |
| |
und du wirst es sehen. Es ist das Einzige. |
| |
Aber wir machen weiter mit dem, was wir tun. |
| |
Also. |
| |
Für jede Codeänderung, die wir vornehmen, |
| |
Es findet ein Pipeline-Lauf statt. |
| |
Wir zeigen Ihnen, was es macht. Wenn ich die README-Datei ändere, erhalten Sie eine Demo für Discovery. |
| |
2021. |
| |
Und ich werde das einfach committen. Wenn Sie nicht wissen, wie man get committet, |
| |
Sie sagen, Sie möchten einen Schnappschuss von unserem aktuellen Standort. Dann übertragen Sie ihn in das Repo und speichern ihn auf dem Server. |
| |
Schöner Tag. |
| |
Commit-Nachricht. Weitere Readme-Informationen. |
| |
Und ich kann einfach Push machen, weil VSCode großartig ist. |
| |
Pipeline-Demo. |
| |
Ich habe es jetzt gepusht. Es läuft eine Pipeline. Ich kann einfach hier runtergehen und darauf klicken, um meinen Merge Request zu erhalten. |
| |
Pipeline wurde gestartet. |
| |
Ich kann den Status der Pipeline überprüfen. |
| |
Was es gerade tut, ist, dass es durchgeht und prüft, ob es die erforderlichen Hamcrest-Dateien hat. Wir haben einige Anforderungen, die |
| |
wir setzen es durch, damit es... |
| |
Wir können sicherstellen, dass wir |
| |
unsere Arbeit gut machen. |
| |
Und dann ist es erledigt. Ich drücke auf Verschlüsseln. |
| |
Jetzt nimmt Encrypt das gesamte Paket und verschlüsselt es. |
| |
Wenn wir hier rübergehen, |
| |
das ist nur eine VM irgendwo. Es sollte |
| |
fang an zu laufen |
| |
in einer Sekunde. |
| |
Es geht also einfach darum, den gesamten Code durchzugehen. |
| |
Das Schreiben aller verschlüsselten Passwörter, das Durchgehen und Anklicken all dieser Dinge. Wenn Sie jemals versucht haben, mehrere Skripte gleichzeitig zu verschlüsseln, |
| |
Sie wissen wahrscheinlich, dass das mühsam ist, deshalb haben wir es automatisiert, sodass wir es nicht tun müssen, weil es, wie Wayne sagte, sehr viel Zeit in Anspruch nahm. |
| |
Wenn wir beispielsweise jedes Mal, wenn wir eine Veröffentlichung machen wollen, 100 Skripte durchgehen und jedes einzelne davon verschlüsseln müssen, ist das furchtbar. |
| |
Denn wir müssen unsere |
| |
Code verschlüsselt, weil, ja, Entschuldigung, Meinung, alles klar, ich kann aufhören, das weiterzugeben. |
| |
Ah. |
| |
Das wird also laufen. |
| |
Es sollte ziemlich bald fertig sein. |
| |
Dann wird es durchlaufen und inszeniert und dann nimmt die Inszenierung im Grunde alle Informationsquellen, die wir wollen, wie unsere wie in unserer Dokumentation, wie in |
| |
alles andere, was wir geschrieben haben, und es rendert sie in die Form, die wir im Add-In haben möchten, denn ähnlich wie der Rest von GitHub und GitLab ist der Großteil unserer Dokumentation in Markdown geschrieben und wir rendern sie dann in was auch immer. |
| |
Den Rest muss ich nicht zeigen, aber ja. Es geht also vorbei. Es wird verschwinden. |
| |
Wir kehren zu VSCode zurück. |
| |
Also. |
| |
Wenn wir das ändern würden, wäre das nur eine einzelne Funktion. |
| |
Wenn ich hier reingehe, als würde ich das ausführen ... |
| |
JSL, aktuelle Auswahl ausführen. |
| |
Also. |
| |
Sie können sehen, dass es zurückgekommen ist. Es versucht lediglich, Big Class zu öffnen, eine Anpassungslinie auszuführen und die Gleichung zu erhalten. Es gibt die Gleichung zurück. |
| |
Und Sie können tatsächlich sehen, dass es auch hierher gelaufen ist. |
| |
Aber. |
| |
Hier könnte also etwas mehr Dokumentation angebracht sein. |
| |
Und wir denken uns: „Oh, wir wollen diese Datentabelle eigentlich nicht öffnen.“ |
| |
Aber lassen Sie uns das einfach schnell durchgehen. |
| |
Und sagen Sie: |
| |
Nein. Das ist keine gute Rendite, es dreht die Gleichung offenbar in Großbuchstaben um. |
| |
Wenn ich das also inszeniere. |
| |
Bessere Dokumentation. |
| |
Drücken. |
| |
Nochmal zurück hierher. |
| |
Also, es wird wieder gedrückt. Dies ist eine weitere Pipeline. |
| |
Es führt einfach eine Reihe von Power Shell-Skripten der Reihe nach aus, je nachdem, wie wir es eingerichtet haben. |
| |
Sie werden jedoch feststellen, dass diese Pipeline mehr Stufen hat. |
| |
Wenn wir also |
| |
Um dies skalieren zu können, testen wir nur die JSL |
| |
zunächst minimal, und wenn es erfolgreich ist, lassen wir weitere Tests zu. |
| |
Und wir haben nur getestet, ob es geänderte JSL-Dateien gibt. |
| |
Aber wir können das durchstehen. |
| |
Es wird ausgeführt und zeigt uns an, wo sich der Test befindet, falls dieser einfriert. Wenn sich ein modales Dialogfeld einfach nicht schließen lässt, wird JMP danach natürlich nichts mehr tun. Aber wie Sie sehen, hat es eine Menge bewirkt, ja, super. Ich bin fertig. |
| |
Spannend. |
| |
Aktualisieren Sie das. Holen Sie sich ein kleines grünes Häkchen. |
| |
Und wir könnten jetzt alles ausführen. Es würde alles durchlaufen, testen, dann verschlüsseln, dann die verschlüsselte Version testen – im Grunde das, was wir als Add-In erstellen werden. Anschließend wird es erneut bereitgestellt, für uns verpackt und das eigentliche Add-In erstellt, das wir einem Kunden zur Verfügung stellen würden. |
| |
Ich werde das nicht ganz schnell machen, weil es eine Minute dauert. |
| |
Aber |
| |
Nehmen wir an, wir gehen hier rein und denken: oh, |
| |
Nun, ich möchte diese Datentabelle unbedingt schließen. Ich weiß nicht, warum ich sie überhaupt auskommentiert habe. Ich glaube nicht, dass sie geöffnet werden sollte, weil ich sie nicht mehr benutze. Wir wollen das nicht. |
| |
Wir sagen okay. |
| |
Schließen Sie das dt. |
| |
Nochmal drücken. Das hätte ich alles manuell auf meinem Computer mit Hamcrest erledigen können. |
| |
Aber wissen Sie, manchmal pusht ein Entwickler Dinge, ohne Hamcrest für alle Anwendungen auf seinem Computer auszuführen. Und genau das ist der Zweck, die Probleme zu erkennen. Das hat uns gezwungen, unsere Arbeit etwas besser zu machen. |
| |
Und |
| |
Ja. |
| |
Klicken Sie weiter auf diese Schaltfläche. Ich könnte das einfach öffnen, aber es ist in Ordnung. |
| |
Sie sehen jetzt, dass die Pipeline wieder ausgeführt wird. Gehen Sie zur Pipeline. |
| |
Und ich werde das immer wieder wiederholen. Wir gehen gerade durch, testen und verschlüsseln, dann testen wir |
| |
weil manchmal die Verschlüsselung ihre eigenen |
| |
Eine Welt voller Probleme, wenn überhaupt jemals jemand mit der Verschlüsselung fertig ist. |
| |
Lauf, lauf, lauf, lauf, lauf. |
| |
Und dann, oh, haben wir einen Wurf bekommen. Schau dir das an? |
| |
Ich versuche nicht, ausdruckslos zu sein, aber Sie wissen schon. |
| |
Wenn wir dies also als fertig markieren und sagen würden, ja, wir sind fertig, würden wir sehen, |
| |
oh, nun, dieser Test wurde nicht bestanden. |
| |
Jetzt |
| |
wir könnten herunterladen |
| |
warum der Test in den Artefakten nicht bestanden wurde. |
| |
Und dies öffnet eine J-Einheit |
| |
Datei, die ich hier einfach herausziehen werde. |
| |
Es wird auch in Getlab gerendert, was möglicherweise einfacher ist, aber im Moment machen wir einfach das. |
| |
Schließlich. Minimieren Sie alles. |
| |
Jetzt komm schon. |
| |
Wir konnten also sehen, dass etwas mit R² passiert ist und ein Fehler aufgetreten ist. |
| |
Innen |
| |
von Blau. |
| |
Also können wir hierher kommen. |
| |
Sagen Sie, warum gibt es etwas in Boo, das dazu führt, dass dies fehlschlägt? |
| |
Wir sehen, oh, jemand hat unsere Gleichung genannt |
| |
und dann gingen sie einfach davon aus, dass die Datentabelle da war. Weil also etwas, das ich geändert hatte, den Code von jemand anderem kaputt machte, als ob das jemals passieren würde. |
| |
Also haben wir dieses Problem. |
| |
Wo bist du hin? Hier gehen wir. |
| |
Das ist also der Hauptzweck von allem, was wir hier tun: feststellen zu können, dass ich etwas geändert und die Sachen von jemand anderem kaputt gemacht habe. |
| |
So konnte ich durch. |
| |
Schau dir an, was Boo macht. |
| |
Sagen Sie, na ja, vielleicht sollte ich einfach Big Class öffnen |
| |
ich selbst. |
| |
Ja, cool. Wenn ich das speichere, |
| |
Ich sollte es wahrscheinlich besser machen. |
| |
Ich öffne die große Klasse selbst. |
| |
Das werde ich inszenieren. |
| |
Große Klasse öffnen. Push bekommen. |
| |
Und noch einmal, zeigen Sie einfach |
| |
die alte Pipeline. |
| |
Nun sollte dies dauern |
| |
nicht...nicht zu lange. |
| |
Also gehen wir hier rein. Wir...wir testen nur an einem...um... |
| |
JMP-Version, aber Sie können sehen |
| |
automatisch, wir testen nur auf einem. |
| |
Dann wartet es, bis der Entwickler sagt: „Ja, ich bin fertig und alles sieht gut aus. Weiter.“ Wir tun das aus Ressourcengründen, |
| |
weil diese auf VMs laufen, die die ganze Zeit automatisch vor sich hin tuckern, und wir haben mehrere Entwickler, die alle diese Systeme verwenden. |
| |
Wir sind auch... |
| |
Sie sehen, dies ist tatsächlich ein Docker-System, wir containerisieren es. |
| |
Wir sind gerade dabei, diese in Container zu packen. Sie funktionieren, aber wir haben noch nicht alle Versionen. |
| |
Aber wir verwenden 14.3, zumindest für dieses Projekt, wir verwenden 14.3, 15, 15.1, |
| |
und das sollte funktionieren. |
| |
Lasst uns die Dinge einfach rückgängig machen. |
| |
Weil Sie wissen, dass das funktioniert. |
| |
Wahrscheinlich hätte ich einen Klassiker machen sollen … aber es ist ok. |
| |
Also ja. |
| |
Wir werden testen. |
| |
Ich habe das Gefühl, ich sage das immer und immer wieder. Wir werden alles testen. |
| |
Wir lassen das hier laufen, um Ihnen das Endergebnis zu zeigen. |
| |
Es sollte nur dauern. |
| |
ein bisschen. |
| |
Wir testen das Ganze und stellen sicher, dass es funktioniert. Sie können die Protokolle einsehen. Wir erhalten wertvolle Informationen darüber, was passiert, wo es sich befindet und wie der laufende Läufer aussieht. |
| |
Ich laufe derzeit nur unter Windows. Auch hier handelt es sich um eine Demo und so weiter, aber |
| |
wir sollten laufen können |
| |
mehr. |
| |
Während das läuft, werde ich noch etwas über VSCode sprechen. |
| |
In VSCode gibt es auch Snippets und Ähnliches. Wenn Sie also eine Funktion erstellen möchten, |
| |
Es wird Ihnen alle Funktionsinformationen bereitstellen. Wir verwenden natürliche Dokumente |
| |
Auch das wurde vom Hamcrest-Team gestohlen, |
| |
als unser |
| |
Entwicklungsdokumentation. |
| |
Es wird also alles in eine natürliche Dokumentenform gebracht. Die Idee ist also, uns bei der Arbeit zu unterstützen und uns dazu zu zwingen, unsere Arbeit zu erledigen. |
| |
ein bisschen besser, mit etwas mehr Schwung. |
| Wayne Levin |
Für die Dokumentation? |
| Vince Faller |
Das dient also der Dokumentation, ja. |
| Wayne Levin |
Während wir entwickeln, dokumentieren wir gleichzeitig. |
| Vince Faller |
Ja, absolut. |
| |
Es gibt auch For-Schleifen und While-Schleifen. |
| |
Für eine assoziierte Reihe und solche Sachen. |
| |
Sind wir... ist das... ist das schon fertig? Wahrscheinlich ist es fertig, ja. |
| |
Wir erhalten also unser grünes Häkchen. Jetzt wird es auf allen Systemen ausgeführt. |
| |
Wenn wir hierher zurückgehen können, werden Sie es einfach sehen. |
| |
Öffnen Sie JMP. Es werden einige Tests ausgeführt. |
| |
wird wahrscheinlich Big Class eröffnen. |
| |
Dann alles schließen ... alles selbst schließen. |
| Wayne Levin |
Wir tun dies vor allem, weil |
| |
Viele unserer Kunden haben verschiedene Versionen von JMP im Einsatz und möchten ein bestimmtes Add-In, aber sie sind |
| |
Beim Ausführen gibt es einfach verschiedene Versionen im Einsatz. Wir testen auch mit den Early-Adopter-Versionen von JMP, was ein Service für JMP ist, da wir Fehler melden. |
| |
Aber auch für die Kunden ist es hilfreich, denn dann wissen sie, dass sie auf die neue Version von JMP upgraden können. Sie wissen, dass die Anwendungen, die wir für sie entwickelt haben, getestet wurden. |
| |
Und das ist für uns ganz normale Routine. |
| |
Gut. |
| Vince Faller |
Sie sind fertig. Sie sind fertig. Sie sind fertig. |
| |
Ändern in... |
| |
Ich kann darüber sprechen... |
| |
Und das wird einfach laufen, wir können |
| |
Mach das mit der Filmmagie, wenn du willst, Meg. |
| |
Nur damit es schneller läuft. |
| |
Im Grunde möchte ich einfach mit der Inszenierung beginnen, aber das dauert eine Sekunde. |
| |
Gibt es sonst noch etwas, das Sie dazu sagen möchten, Wayne? |
| |
Cool. |
| |
Ich werde das sagen... |
| |
Etwas, das ich sagen kann, |
| |
wenn wir inszenieren, |
| |
Wir haben unsere Dokumentation auch in MK-Dokumenten. Es führt also die Version des MK-Dokuments aus, rendert sie, fügt die Hilfe in die Hilfedateien ein und kann im Grunde eine Version für uns erstellen, sodass wir nicht |
| |
damit klarkommen. |
| |
Denn Releases zu erstellen ist einfach mit viel Aufwand verbunden. |
| |
Verschlüsseln. Es ist fast fertig. |
| |
Wahrscheinlich hätte man einfach eines vorinstallieren sollen. |
| |
Live-Demos, was werden Sie tun? |
| |
Manche. |
| |
Laufen. |
| |
Oh, eine Sache möchte ich unbedingt machen. |
| |
Das Letzte, was die Pipeline tatsächlich macht, ist zu prüfen, ob wir unsere Zeit tatsächlich investiert haben, denn, wissen Sie, wenn |
| |
Wir erfassen unsere aufgewendete Zeit nicht wirklich und werden auch nicht dafür bezahlt, was uns dazu zwingt. |
| |
Tolle, tolle Zeit. |
| Win Falls |
Also |
| Vince Faller |
Ohne das wäre der Job gescheitert. |
| |
Ich kann nur ein paar Jobs zeigen. Ich versuche es. |
| |
Das ist das Docker-Problem. Das wollen wir nicht. |
| |
Also |
| |
Sie sehen, das hat uns unsere Erfolge beschert. |
| |
Keine Ausfälle. Keine unerwarteten Würfe. Das ist alles Zeug von Hamcrest. |
| |
Komm schon. Noch eins. |
| |
Okay, ich muss zur Inszenierung. |
| |
Eine der Aufgaben besteht darin, die Repositories zu erstellen. |
| |
Es kreiert sie jedes Mal frisch. |
| |
Es ist also so, als würde man versuchen, es in einer Art zustandslosen |
| |
Weg. Okay, wir können die Artefakte jetzt herunterladen. |
| |
Und jetzt sollten wir diese Pipeline-Demo haben. |
| |
Ich wünschte wirklich, es wäre einfach dorthin gegangen. |
| |
Was. |
| |
Warum ist der Internet Explorer aktiv? Sie sehen jetzt die Pipeline-Demo |
| |
ist ein JMP-Add-In. |
| |
Wenn wir es entpacken. |
| |
Falls Sie es nicht wussten: Ein JMP-Add-In ist einfach eine ZIP-Datei. |
| |
Wenn wir uns das jetzt ansehen, |
| |
Sie sehen, dass alle unsere Skripte darin enthalten sind, darunter unser Foo und unsere Bar. Wenn wir diese öffnen, |
| |
offen, |
| |
Sie können sehen, dass es sich um eine verschlüsselte Datei handelt. |
| |
Das ist also im Wesentlichen das, was wir dem Kunden geben könnten |
| |
und nicht so viel mechanische Arbeit haben. Wayne erwähnte, dass |
| |
die Entwickler sind weniger frustriert, und ich persönlich glaube, das ist untertrieben, denn es war sehr frustrierend, dies immer wieder zu tun, bevor wir es eingerichtet hatten, und das hat sehr geholfen. |
| |
Das. |
| Wayne Levin |
Nun zur Verschlüsselung, wenn Sie ein Add-In bereitstellen |
| |
Für den Einsatz durch Benutzer innerhalb eines Unternehmens, möchten Sie in der Regel nicht, aus Sicherheitsgründen und so weiter, Sie wollen nicht, dass sie jedermann in der Lage, in und |
| |
Umgang mit dem Code. So etwas in der Art. Wir liefern den Code vielleicht unverschlüsselt, damit der Kunde seinen Code verschlüsselt hat, aber für die Übermittlung an den Endbenutzer möchte man normalerweise alles verschlüsselt haben, damit es nicht manipuliert werden kann. So etwas in der Art. |
| Vince Faller |
Ja, und das ist das Ende meiner Demo. Wayne, wenn du es zum Abschluss noch einmal mitnehmen möchtest. |
| Wayne Levin |
Ja, großartig. |
| |
Klar, vielen Dank dafür, Vince. Es gibt viele bewegliche Teile in diesem ganzen System, also geht es im Grunde darum, sicherzustellen, dass wir … |
| |
Code wird von mehreren Benutzern entwickelt, ohne dass es zu Konflikten kommt. Wir integrieren die Dokumentation gleichzeitig. Die Dokumentation wird zusammen mit der Anwendung bereitgestellt, wir müssen sie nicht extra einbinden. Es ist... |
| |
Wir richten die Infrastruktur so ein, dass sie automatisch gepflegt wird. Wir können sie zusammen mit dem Code umfassend und gleichzeitig aktualisieren. |
| |
wenn man so will. Die laufenden Hamcrest-Tests, jede einzelne der geschriebenen Funktionen, |
| |
Es gibt sozusagen erwartete Ergebnisse. Sie werden also verglichen, und wir haben kurz gesehen, dass es da wohl ein Problem mit der Gleichung gab. Ein R-Quadrat oder was auch immer ergab einen anderen Wert. |
| |
also ist es kaputt gegangen, mit anderen Worten, um zu sagen, hey, hier stimmt etwas nicht; ich habe diese Ausgabe von der Funktion erwartet |
| |
für einen Anwendungsfall. Das ist eines der Dinge, die wir von Kunden bekommen. Wir bauen also einen Pool von Anwendungsfällen auf, die in Hamcrest-Tests umgewandelt werden, und los geht’s. Es gibt hier noch ein paar weitere Folien, die |
| |
stehen Ihnen zur Verfügung, wenn Sie die Folien herunterladen. Ich stelle sie Ihnen zur Verfügung und hier ist ein kleines Bild der Pipeline. |
| |
die wir einsetzen, und auch ein wenig über die Code-Review-Aktivitäten für Entwickler. Wenn Sie möchten, können Sie das gerne besprechen. Vince, möchten Sie hier noch etwas dazu sagen, wie Code-Review und -Freigabe ablaufen? |
| Vince Faller |
Ja, also innerhalb der Merge-Anfrage |
| |
Es wird den JSL-Code auf den Diffs des Codes haben. Und wieder ein großes |
| |
Vielen Dank an |
| |
Auch die Leute, die Hamcrest gemacht haben, weil sie auch einen Lexer(?) für GitHub und GitLab gestartet haben, um JSL lesen zu können, also befindet sich das tatsächlich innerhalb von getlab. |
| |
Und sie können auch die JSL lesen. Sie führt sie zwar nicht aus, hat aber eine ansprechende Formatierung. Es ist nicht nur weißer Text, sondern wunderschön gestaltet. Wir gehen einfach rein, |
| |
Wie in diesem Screenshot klicken Sie auf eine Zeile, geben den gewünschten Kommentar ein und die Aufgabe wird überprüft. Wir versuchen, so viel wie möglich innerhalb von GitLab zu erledigen. |
| |
aus Gründen der Transparenz und |
| |
Sobald alles abgeschlossen ist, können Sie sagen: „Ja, mein Merge-Request ist fertig.“ Fügen wir ihn in den Master-Branch ein. |
| Wayne Levin |
Super. Es hilft wirklich, wissen Sie, wir definieren sozusagen Kodierungsstandards, und |
| |
Ich mag das Wort Durchsetzung nicht, aber genau darauf läuft es hinaus. Und es reduziert die Variation. Es erleichtert mehreren Entwicklern, wenn man so will, das Verständnis, was |
| |
was andere getan haben. Und wenn wir neue Entwickler an Bord holen, verstehen sie den Standard und wissen, worauf sie achten müssen. Sie wissen, was zu tun ist. |
| |
Es erleichtert also das Onboarding erheblich und befasst sich auch damit, dass hier alles mit allem verbunden ist, also mit der Supportfähigkeit und so weiter. |
| |
Dies ist die Folie, die ich vorhin erwähnt habe. Wir verwenden GitLab. Ich nehme an, die gleichen Prinzipien gelten im Allgemeinen für jedes Git, also GitHub oder ähnliches. Hier ist der Community-Link für Hamcrest. Es gab einen Vortrag bei |
| |
Das war 2019 in Tucson, damals, als wir noch viel gereist sind und uns getroffen haben. Das hat richtig Spaß gemacht. Und hier ist der Marktplatz-Link für die Visuals … Visual Code Studio. |
| |
Visual Studio Code, was auch immer Sie haben. |
| |
Wie Vince schon sagte: Wir nutzen diesen Editor häufig, im Gegensatz zum integrierten JMP-Editor, einfach weil er vollständig integriert ist. Es ist... |
| |
Es ist alles Teil einer großen Anwendungsentwicklungsumgebung. In diesem Sinne möchte ich Ihnen, Vince und ich, im Namen von Vince und mir selbst, für Ihr Interesse danken und mich nochmals beim JMP-Team bedanken. Justin Chilton und sein Team, |
| |
Ich rufe dich an. Ohne Hamcrest wären wir nicht hier. Das war |
| |
das fehlende Stück oder das entscheidende Stück, das es uns wirklich ermöglichte, die JSL-Entwicklung auf ein neues Niveau zu bringen, |
| |
Im Grunde genommen die Standards, die man in der Code-Entwicklung in der Industrie allgemein erwartet. Wir sind wirklich dankbar dafür, und ich weiß, dass unsere … |
| |
Sie wissen, dass dies mit jeder Anwendung, die wir bereitstellen, weitergegeben wird. An dieser Stelle beantworten Vince und ich gerne alle Fragen, die … |
| |
Senden Sie eine E-Mail an info@predictum.com. Wir leiten Ihre Anfrage weiter und melden uns bei Ihnen. An dieser Stelle öffnen wir die Fragerunde. |