| Oratore |
Trascrizione |
| Wayne Levin |
Benvenuti alla nostra sessione sull'estensione dei test automatizzati Hamcrest delle applicazioni JSL per un miglioramento continuo. |
| |
Quello che ti mostreremo qui, la nostra promessa è che ti mostreremo come anche tu puoi costruire un'azienda produttiva ed economicamente vantaggiosa. |
| |
Sistemi analitici integrati mission-critical basati su JMP, altamente affidabili e di elevata qualità, con supporto. Certo, c'è molto da dire, ma è |
| |
È quello che stiamo facendo in questo contesto. Ne siamo molto soddisfatti. Siamo davvero onorati di poterlo condividere con voi. |
| |
Ecco quindi l'ordine del giorno che seguiremo. Una breve introduzione, la farò tra un attimo, e un breve accenno a Predictum, perché potreste non sapere molto di noi. |
| |
il nostro background, il background del nostro sviluppo JSL, l'infrastruttura, un po' di storia a riguardo. |
| |
E poi i risultati dei cambiamenti che abbiamo messo in atto e che siamo qui per condividere con voi. Poi faremo una dimostrazione e parleremo di cosa ci aspetta, di cosa abbiamo pianificato per il futuro, e infine apriremo la discussione a qualsiasi domanda possiate avere. |
| |
Allora, sono Wayne Levin, quello qui a destra sono io. Sono il presidente di Predictum e sono membro |
| |
Con Vince Faller. Vince è il nostro capo ingegnere del software che ha guidato questa importantissima iniziativa. Quindi, un breve riassunto su di noi. Siamo partner JMP. |
| |
Abbiamo lanciato l'attività nel 1992, quindi avevamo 29 anni. |
| |
Forniamo formazione sui metodi statistici e così via, utilizzando JMP, offrendo consulenza in tali aree e spendiamo molto tempo a costruire e |
| |
implementazione di applicazioni e sistemi analitici integrati, ecco perché questo sforzo è stato molto importante per noi. Abbiamo inizialmente fornito l'applicazione JMP con |
| |
JMP 4.0 è arrivato nel 2000, sì, più di 20 anni fa, e da allora abbiamo sviluppato sistemi più grandi. Certo, da allora erano strumenti troppo piccoli, ma abbiamo iniziato, credo, intorno a JMP 8 o 9, sviluppando sistemi più grandi. |
| |
Abbiamo una storia piuttosto lunga su questo argomento, più di 10 anni fa. Quindi, giusto un po' di contesto... fino alla seconda metà del 2019 circa, il nostro ambiente di sviluppo era molto eterogeneo, frammentario. |
| |
Gestione del progetto |
| |
C'era, ma ancora una volta, tutto era un po' frammentato. Avevamo diverse applicazioni per il controllo delle versioni e per la gestione del tempo, sai, il nostro tempo di sviluppo, e così via, e la gestione dei progetti in generale. |
| |
Gli sviluppatori spendevano facilmente, e ne parleremo, |
| |
circa metà del loro tempo lo dedicano a compiti meccanici di routine, come la crittografia e il packaging di componenti aggiuntivi JMP. Sai, gestire i pacchetti di configurazione e, |
| |
Sai, e separare i repository, o quelli che generalmente chiamiamo repository, per gli script crittografati e non crittografati. C'era... c'era molto a cui pensare che non era proprio lavoro di sviluppo. Era davvero un lavoro che |
| |
Il talento degli sviluppatori è... sprecato. Come ho detto, lo facevamo da molto tempo, anche nel 2019, avevamo facilmente 10 anni, quindi più di 10 anni di framework legacy che risalivano fino a JMP 5, sapete, e stava diventando gonfio e lento. |
| |
E sappiamo che JMP ha fatto molta strada nel corso degli anni. Voglio dire, in JMP 9 abbiamo introdotto i namespace e in JMP 14 abbiamo introdotto le classi, ed è stato allora che Hamcrest è arrivato. |
| |
È iniziato. Ed è stato Hamcrest a permetterci davvero di arrivare a questo... con questa importante iniziativa. Così abbiamo avviato questa importante iniziativa nell'agosto del 2019. |
| |
Ed è allora che abbiamo acquisito le nostre prime licenze Gitlab e questo è stato lo sviluppo della nostra nuova... lo sviluppo della nostra nuova architettura di sviluppo, ecco, ha iniziato a prendere forma e da allora non ha fatto altro che migliorare. |
| |
Fondamentalmente, ogni mese abbiamo ampliato e potenziato le nostre capacità per diventare sempre più produttivi, man mano che andiamo avanti. |
| |
E questo continua, quindi lo consideriamo, se vogliamo, un'iniziativa di tipo Lean. Segue davvero i principi Lean e ha accelerato il nostro sviluppo. |
| |
Grazie a questo sistema, abbiamo test automatizzati, e Vince ce lo mostrerà. E abbiamo questo piccolo modello qui, testare presto e spesso. |
| |
Ed è proprio quello che facciamo. Supporta il riutilizzo del codice e abbiamo riprogettato il nostro framework di sistema Predictum. Ora è la versione 2.0. Abbiamo imparato molto dai nostri sforzi precedenti. Tutto ciò è sparito, praticamente tutto, ed è stato sostituito e ampliato. |
| |
E Vince ci racconterà di più. Abbiamo avuto un aumento di produttività di oltre il 50%, e posso solo dire che gli sviluppatori sono molto più soddisfatti. Sono meno frustrati. |
| |
Sono più concentrati sul loro lavoro, intendo il vero lavoro che dovrebbero fare gli sviluppatori, non le cose noiose. |
| |
Devo dire che c'è ancora margine di miglioramento, quindi non abbiamo finito. Vince ci racconterà di più a riguardo. |
| |
Ora abbiamo degli standard di sviluppo, quindi abbiamo delle guide di stile per le funzioni e tutto il nostro sviluppo è basato sulle funzionalità, potremmo dire. |
| |
Ogni funzione richiede almeno un test Hamcrest e ci sono revisioni del codice che gli sviluppatori condividono tra loro |
| |
Per garantire che seguiamo i nostri standard. E solleva interrogativi su come migliorarli, renderli ancora migliori. |
| |
Abbiamo anche queste sessioni divertenti, in cui gli sviluppatori sono incoraggiati a rompere il codice, |
| |
Giusto, quindi si chiamano così, queste sfide di break code, o qualcosa del genere. Quindi è diventato parte del nostro modus operandi e si adatta perfettamente a questo ambiente di sviluppo. Porta, ad esempio, ad aggiungere ulteriori test, altri test Hamcrest. Abbiamo un piccolo, piuttosto piccolo progetto. |
| |
che abbiamo fatto poco più di un anno fa. Stiamo entrando in una nuova fase. È già passato... |
| |
Sono integrati ben oltre 100 test Hamcrest, che vengono eseguiti più e più volte durante il processo di sviluppo. |
| |
Un altro vantaggio è che ci permette di assegnare e monitorare l'allocazione delle risorse, ad esempio cosa stanno facendo gli sviluppatori. Tutti sanno cosa stanno facendo gli altri. |
| |
integrazione continua, distribuzione continua, qualcosa del genere), |
| |
Ci sono... le collisioni di codice vengono rilevate in anticipo, quindi se... e succede, abbiamo più persone che lavorano su alcuni progetti, quindi, sai, qualcuno sta modificando una funzione qui e questa entrerà in collisione con qualcosa che sta facendo qualcun altro. Lo scopriremo molto prima. |
| |
Ci permette anche di migliorare il supporto tra più membri dello staff. Non possiamo avere codice dipendente da un singolo sviluppatore; dobbiamo avere codice che qualsiasi sviluppatore o membro del personale di supporto possa supportare. |
| |
Andare avanti. Quindi anche questo era un obiettivo importante per noi. E in generale fa progredire l'intera area della garanzia della qualità, |
| |
incluso il supporto, sai, ai requisiti FDA, riguardanti la QA, sai, cose come la convalida, l'IQ OQ PQ. Quindi... stiamo automatizzando o semi-automatizzando |
| |
anche questi compiti attraverso questa infrastruttura. La utilizziamo internamente ed esternamente, quindi forse lo sapete, abbiamo |
| |
alcuni prodotti là fuori, (???)Kobe sash lab ma i nuovi spam bene Kobe invia spam(???) se ne parla anche altrove |
| |
alla conferenza europea JMP Discovery nel 2021. Potresti volerli dare un'occhiata, ma sono piuttosto grandi |
| |
basi di codice e sono tutte sviluppate, in altre parole, mangiamo il nostro cibo per cani, se conosci questa espressione, ma lo usiamo anche con tutti i nostri client |
| |
sviluppo, quindi questo è qualcosa di importante per i nostri clienti, perché stiamo creando applicazioni da cui dipenderanno. |
| |
E quindi noi, noi dobbiamo... dobbiamo avere un'infrastruttura che ci consenta di essere affidabili e, in ogni caso, questa è una parte importante. |
| |
Ho menzionato il framework di sistema Predictum. Potete vederne alcuni frammenti qui. È proprio all'interno dell'indice di scripting, e sapete, vediamo gli argomenti e il |
| |
Esempi e tutto il resto. Abbiamo integrato tutto questo e il 95%, oltre il 95% di essi ha test Hamcrest associati. Ovviamente, il nostro obiettivo è assicurarci che tutti li abbiano e ci stiamo arrivando. |
| |
Ci stiamo arrivando. Abbiamo... questo framework... questo framework è in realtà parte della nostra infrastruttura qui. Questo è uno degli elementi importanti. Un altro è proprio questo... Hamcrest... |
| |
la possibilità di eseguire test unitari. E avrò... c'è una diapositiva alla fine, che vi darà un link alla Community dove potrete saperne di più su Hamcrest. Questa è una |
| |
Sviluppo che ci è stato offerto da JMP, già con JMP 14, come ho accennato pochi minuti fa. Gitlab è un elemento fondamentale; ci fornisce il repository di gestione dei progetti, la pipeline di CI/CD, ecc. |
| |
E c'è anche un'estensione visiva...del codice di Visual Studio per JSL che abbiamo creato e noi...vedete cinque stelle lì perché le sono state date cinque stelle su |
| |
su Visual Studio. Non sono sicuro di come lo chiamiamo. Vince, forse puoi dirci qualcosa, lo store, cosa ne pensi. È stato scaricato centinaia di volte e siamo stati |
| |
Aggiornandolo regolarmente. Quindi è qualcosa che puoi cercare anche tu. Credo che ci sia un link anche per questo nella diapositiva delle risorse alla fine. |
| |
Quindi quello che farò ora è passare la parola a Vince Faller. Vince è, ancora una volta, il nostro ingegnere capo del software. Vince ha guidato questa iniziativa, a partire da agosto 2019, come ho detto. È stato un duro lavoro e |
| |
Il duro lavoro continua. Siamo tutti, in azienda, molto grati a Vince e alla sua leadership. Detto questo, Vince, perché non prendi in mano la situazione da qui? Io... |
| |
Io sono... |
| Vince Faller |
Condivisione. |
| |
Quindi Wayne ha ripetuto più volte "Hamcrest". Per chi non lo sapesse, è un componente aggiuntivo creato da |
| |
JMP. |
| |
Justin Chilton ed Evan McCorkle ne erano i responsabili. Si tratta semplicemente di una libreria di unit test che permette di eseguirli, testarli e ottenere risultati in modo automatizzato. |
| |
Fu questo il vero inizio per la nostra capacità di fare ciò, ecco perché si chiama estensione. |
| |
Vi mostrerò un po' di cose |
| |
Con il mio schermo. Lavoro praticamente esclusivamente con l'estensione VSCode che abbiamo creato. Questa è VSCode. |
| |
Lo facciamo perché ha molte funzionalità integrate o estensibili che non dobbiamo scrivere, come l'integrazione Get, l'integrazione di laboratorio Get. |
| |
Qui potete vedere che si tratta di uno script JSL e che lo legge senza problemi. |
| |
Se vuoi ottenerlo, se... se hai familiarità con VSCode, è solo un editor di testo leggero. Ti basta digitare JMP. |
| |
e lo vedrai. È l'unico. |
| |
Ma andiamo al dunque. |
| |
COSÌ. |
| |
Per ogni modifica al codice che apportiamo, |
| |
c'è un oleodotto in funzione. |
| |
Vi mostreremo solo cosa fa. Quindi, se modifico il file README in questo modo, ecco una demo per Discovery. |
| |
2021. |
| |
E lo farò. Se non lo sai, commetterlo è solo |
| |
dicendo che voglio un'istantanea di dove ci troviamo esattamente in quel momento, e poi la inoltro al repository e la salvo sul server. |
| |
Buona giornata. |
| |
Messaggio di commit. Ulteriori informazioni nel file readme. |
| |
E posso semplicemente ottenere push, perché VSCode è fantastico. |
| |
Dimostrazione della pipeline. |
| |
Quindi ora l'ho spinto. Ci sarà una pipeline in esecuzione. Posso semplicemente andare qui sotto e cliccare qui e mi verrà inviata la mia richiesta di merge. Quindi ora |
| |
la conduttura ha iniziato a funzionare. |
| |
Posso controllare lo stato della conduttura. |
| |
Quello che sta facendo adesso è controllare che siano presenti i file Hamcrest richiesti. Abbiamo alcuni requisiti che |
| |
noi lo facciamo in modo che possa... |
| |
possiamo assicurarci che siamo |
| |
fare bene il nostro lavoro. |
| |
E poi è fatto. Premo "Crittografa". |
| |
Ora encrypt prenderà l'intero pacchetto e lo crittograferà. |
| |
Se andiamo qui, |
| |
questa è solo una macchina virtuale da qualche parte. Dovrebbe |
| |
iniziare a correre |
| |
in un secondo. |
| |
Quindi si tratta semplicemente di esaminare tutto il codice. |
| |
Scrivere tutte le password crittografate, controllarle, cliccare su tutto il resto. Se hai mai provato a crittografare più script contemporaneamente, |
| |
Probabilmente saprai che è una seccatura, quindi lo abbiamo automatizzato in modo da non doverlo fare perché, come ha detto Wayne, ci stava prendendo un sacco di tempo. |
| |
Ad esempio, se dovessimo analizzare 100 script e crittografarli tutti quanti ogni volta che vogliamo pubblicare qualcosa, sarebbe orribile. |
| |
Perché dobbiamo avere il nostro |
| |
codice criptato perché, sì, scusa, opinione, va bene, posso smettere di condividerla. |
| |
Ah, sì. |
| |
Quindi funzionerà. |
| |
Dovrebbe terminare molto presto. |
| |
Quindi verrà elaborato e messo in scena e quindi la messa in scena prende sostanzialmente tutte le fonti di informazioni che vogliamo, come nella nostra documentazione, come in |
| |
tutto il resto che abbiamo scritto e lo trasponiamo nel formato che vogliamo nel componente aggiuntivo, perché come il resto di github, gitlab, la maggior parte della nostra documentazione è scritta in markdown e poi la trasponiamo in qualsiasi altro formato. |
| |
Non c'è bisogno che vi mostri il resto, ma sì. Quindi passa. Se ne andrà. |
| |
Torniamo a VSCode. |
| |
COSÌ. |
| |
Se dovessimo modificarlo, questa sarebbe solo una singola funzione. |
| |
Se entro qui, se dovessi gestire questa cosa... |
| |
JSL, esegui la selezione corrente. |
| |
COSÌ. |
| |
Puoi vedere che è tornato... tutto ciò che sta cercando di fare è aprire Big Class, calcolare una retta di approssimazione e ottenere l'equazione. Sta restituendo l'equazione. |
| |
E potete vedere che è passato anche qui. |
| |
Ma. |
| |
Quindi potrebbe essere necessaria ulteriore documentazione. |
| |
E noi diciamo, oh, in realtà non vogliamo che questa tabella dati sia aperta. |
| |
Ma andiamo per ordine. |
| |
E dire, |
| |
No. Non è un buon risultato, a quanto pare capovolge l'equazione in maiuscolo. |
| |
Quindi se lo metto in scena. |
| |
Una documentazione migliore. |
| |
Spingere. |
| |
Di nuovo qui. |
| |
Quindi, di nuovo, si spinge. Questa è un'altra conduttura. |
| |
Si tratta semplicemente di eseguire una serie di script PowerShell in ordine, a seconda di come li abbiamo impostati. |
| |
Ma noterete che questa pipeline è composta da più fasi. |
| |
Quindi quando noi |
| |
nel tentativo di aiutare a scalare questo, testiamo solo il JSL |
| |
all'inizio in modo minimo e poi, man mano che passa, permettiamo ulteriori test. |
| |
Abbiamo testato solo se ci sono file JSL che sono stati modificati. |
| |
Ma possiamo farcela. |
| |
Verrà eseguito e ci dirà a che punto si trova nel test, nel caso in cui il test si blocchi. Sai, se hai una finestra di dialogo modale che non si chiude, ovviamente JMP non continuerà a fare nulla. Ma vedi, ha fatto un sacco di cose, sì, fantastico. Ho finito. |
| |
Emozionante. |
| |
Aggiornalo. Ottieni un piccolo segno di spunta verde. |
| |
E potremmo dire, ok, eseguiamo tutto ora. Verrebbe eseguito, testerebbe tutto, poi lo crittograferebbe, poi testerebbe la parte crittografata, in pratica la cosa vera e propria di cui creeremo il componente aggiuntivo, e poi lo prepareremmo di nuovo, lo impacchetteremmo per noi, creeremmo il componente aggiuntivo vero e proprio che daremmo al cliente. |
| |
Non lo farò subito perché ci vorrà un minuto. |
| |
Ma |
| |
diciamo che entriamo qui e siamo, tipo, oh, |
| |
Beh, vorrei davvero chiudere questa tabella dati. Non so perché l'ho commentata in primo luogo. Non credo che debba rimanere aperta, perché non la uso più, non... non vogliamo che accada. |
| |
Diremo ok. |
| |
Chiudere il dt. |
| |
Di nuovo, premi. Ora, tutto questo potrebbe essere fatto manualmente sul mio computer con Hamcrest. |
| |
Ma sai, a volte uno sviluppatore spinge i suoi progetti e non esegue Hamcrest per tutto ciò che ha sul computer, e questo... lo scopo è proprio quello di intercettarli. Ci ha costretti a fare il nostro lavoro un po' meglio. |
| |
E |
| |
Sì. |
| |
Continua a cliccare su questo pulsante. Potrei anche aprirlo, ma va bene. |
| |
Ora vedrai che la pipeline è di nuovo in esecuzione. Vai alla pipeline. |
| |
E continuerò a ripeterlo. Stiamo solo esaminando, testando e crittografando, e poi testando. |
| |
perché a volte la crittografia entra da sola |
| |
un mondo di problemi, se qualcuno ha mai provato a crittografare. |
| |
Corri, corri, corri, corri, corri. |
| |
E poi, oh, abbiamo avuto un lancio. Guarda un po'! |
| |
Non voglio essere impassibile, ma lo sai. |
| |
Quindi se dovessimo contrassegnarlo come pronto e dire, sì, abbiamo finito, vedremmo, |
| |
Oh, beh, quel test non è stato superato. |
| |
Ora |
| |
potremmo scaricare |
| |
perché il test non è stato superato negli artefatti. |
| |
E questo aprirà un'unità J |
| |
file che ora estrarrò qui. |
| |
Sarà anche possibile visualizzarlo in getlab, il che potrebbe essere più semplice, ma per ora faremo solo questo. |
| |
Alla fine. Riduci al minimo tutto. |
| |
Forza, adesso! |
| |
Quindi, abbiamo potuto vedere che qualcosa è successo con R quadrato e non ha funzionato. |
| |
Dentro |
| |
di blu. |
| |
Quindi possiamo venire qui. |
| |
Dimmi, perché c'è qualcosa in boo che sta causando il fallimento? |
| |
Vediamo, oh, qualcuno ha chiamato la nostra equazione |
| |
E poi hanno dato per scontato che la tabella dati fosse lì. Quindi, perché qualcosa che ho modificato ha danneggiato il codice di qualcun altro, come se ciò potesse mai accadere. |
| |
Quindi abbiamo questo problema. |
| |
Dove sei andato? Eccoci qui. |
| |
Quindi lo scopo principale di tutto quello che stiamo facendo qui è riuscire a cogliere il fatto che ho cambiato qualcosa e ho rotto la roba di qualcun altro. |
| |
Così ho potuto passare. |
| |
Guarda cosa fa Boo. |
| |
Diciamo, oh bene, forse dovrei semplicemente aprire Big Class |
| |
me stessa. |
| |
Sì, fantastico. Beh, se lo salvo, |
| |
Probabilmente dovrei migliorarlo. |
| |
Apro io stesso la Big Class. |
| |
Lo metterò in scena. |
| |
Classe Grande Aperta.Spingi. |
| |
E ancora, mostra semplicemente |
| |
il vecchio oleodotto. |
| |
Ora questo dovrebbe prendere |
| |
non...non troppo lungo. |
| |
Quindi entreremo qui. Stiamo... testeremo solo su uno... per... |
| |
Versione JMP, ma puoi vedere |
| |
automaticamente, eseguiamo il test solo su uno. |
| |
Poi aspetta che lo sviluppatore dica: "Sì, ho finito e tutto sembra a posto. Continua". Lo facciamo per motivi di risorse, |
| |
perché vengono eseguiti su macchine virtuali che funzionano sempre automaticamente e abbiamo più sviluppatori che utilizzano tutti questi sistemi. |
| |
Siamo anche... |
| |
Come puoi vedere, questo è in realtà un sistema Docker, lo stiamo containerizzando. |
| |
Bene, li stiamo containerizzando. Sono funzionanti, ma non abbiamo ancora tutte le versioni. |
| |
Ma noi usiamo 14.3, almeno per questo progetto, usiamo 14.3, 15, 15.1, |
| |
e dovrebbe funzionare. |
| |
Ripristiniamo semplicemente le cose. |
| |
Perché sai che funziona. |
| |
Probabilmente avrei dovuto fare un classico...ma va bene così. |
| |
Quindi sì. |
| |
Faremo un test. |
| |
Mi sembra di ripeterlo ancora e ancora. Faremo tutti i test. |
| |
In realtà lo faremo funzionare per mostrarvi il risultato finale che otteniamo. |
| |
Dovrebbe bastare. |
| |
un po. |
| |
Quindi lo testeremo, ci assicureremo che funzioni, e potrete vedere i log. Stiamo ottenendo informazioni decenti su ciò che sta accadendo, su dove si trova, ad esempio, vi dirà qual è il runner che sta correndo. |
| |
Al momento sto usando solo Windows. Di nuovo, questa è una demo e tutto il resto, ma |
| |
dovremmo essere in grado di correre |
| |
Di più. |
| |
Nel frattempo, vorrei parlarvi ancora un po' di VSCode. |
| |
In VSCode, ci sono anche...ci sono anche frammenti e cose del genere, quindi se vuoi creare una funzione, |
| |
Ti creerà tutte le informazioni sulla funzione. Utilizziamo documenti naturali. |
| |
ancora una volta, è stato rubato al team di Hamcrest, |
| |
come il nostro |
| |
documentazione di sviluppo. |
| |
Quindi metterà tutto in un formato di documenti naturale. Quindi, ancora una volta, l'idea è di aiutarci a fare il nostro lavoro e di costringerci a farlo. |
| |
un po' meglio, con un po' più di entusiasmo. |
| Wayne Levin |
Per la documentazione? |
| Vince Faller |
Quindi questo è per la documentazione, sì. |
| Wayne Levin |
Mentre sviluppiamo, documentiamo allo stesso tempo. |
| Vince Faller |
Sì. Assolutamente sì. |
| |
Sai, ha anche i cicli for e while. |
| |
Per quanto riguarda una fila di associati, cose del genere. |
| |
Siamo... è... è già finito? Probabilmente è già finito, sì. |
| |
Quindi otteniamo il nostro segno di spunta verde. Ora funzionerà su tutti i sistemi. |
| |
Se potessimo tornare indietro, lo vedresti. |
| |
Apri JMP. Eseguirà alcuni test, |
| |
probabilmente aprirà Big Class. |
| |
Quindi chiudi tutto...si chiude completamente. |
| Wayne Levin |
Quindi lo stiamo facendo, in gran parte perché |
| |
molti dei nostri clienti hanno diverse versioni di JMP distribuite e desiderano un componente aggiuntivo particolare, ma sono |
| |
Quando lo eseguiamo, hanno, sai, diverse versioni disponibili sul campo. Testiamo anche con le versioni early adopter di JMP, che è un servizio per JMP perché segnaliamo i bug. |
| |
Ma è utile anche per i clienti, perché sanno che possono... possono aggiornare alla nuova versione di JMP. Sanno che le applicazioni che abbiamo creato per loro sono state testate. |
| |
Per noi questa è solo routine. |
| |
Bene. |
| Vince Faller |
Finito. Finito. Finito. Finito. |
| |
Cambia in... |
| |
Posso parlare di... |
| |
E questo funzionerà, possiamo |
| |
Se vuoi, Meg, la magia del cinema è assicurata. |
| |
Solo per farlo andare più veloce. |
| |
In pratica, vorrei solo arrivare alla messa in scena, ma ci vuole un secondo. |
| |
Wayne, c'è qualcos'altro che hai da dire a riguardo? |
| |
Freddo. |
| |
Lo metterò... |
| |
Qualcosa che posso dire, |
| |
quando mettiamo in scena, |
| |
Abbiamo anche la nostra documentazione in mk docs. Quindi eseguirà effettivamente la versione di mk docs, la renderizzerà, inserirà la guida nei file di aiuto e, in pratica, sarà in grado di creare una versione per noi, in modo che non dobbiamo farlo noi. |
| |
affrontare. |
| |
Perché creare delle release richiede molto impegno. |
| |
Crittografia. È quasi fatta. |
| |
Probabilmente sarebbe stato meglio averne solo uno precaricato. |
| |
Dimostrazioni dal vivo, cosa farai? |
| |
Alcuni. |
| |
Correre. |
| |
Oh, una cosa che voglio assolutamente fare. |
| |
Quindi, l'ultima cosa che la pipeline fa in realtà è controllare che abbiamo effettivamente impiegato il nostro tempo, perché, sai, se |
| |
in realtà non registriamo il tempo impiegato, non veniamo pagati e quindi siamo costretti a farlo. |
| |
Fantastico, fantastico! |
| Win Falls |
COSÌ |
| Vince Faller |
altrimenti il lavoro sarebbe fallito. |
| |
Posso solo mostrarti alcuni lavori. Ci sto provando. |
| |
Quello è il Docker. Non lo vogliamo. |
| |
COSÌ |
| |
Come potete vedere, è questo che ci ha portato al successo. |
| |
Nessun fallimento. Nessun lancio inaspettato. Questa è tutta roba da Hamcrest. |
| |
Forza. Ancora uno. |
| |
Ok, passiamo alla messa in scena. |
| |
Una delle cose che fa è creare i repository. |
| |
Li crea sempre nuovi. |
| |
Quindi è come se cercasse di mantenerlo in una sorta di stato senza stato |
| |
modo. Ok, ora possiamo scaricare gli artefatti. |
| |
E ora dovremmo avere questa demo della pipeline. |
| |
Avrei davvero preferito che andasse lì e basta. |
| |
Che cosa. |
| |
Perché Internet Explorer è inattivo? Ora vedrai la demo della pipeline. |
| |
è un componente aggiuntivo JMP. |
| |
Se lo decomprimiamo. |
| |
Nel caso non lo sapessi, un componente aggiuntivo JMP è semplicemente un file zip. |
| |
Se lo guardiamo adesso, |
| |
Puoi vedere che contiene tutti i nostri script, il nostro foo, il nostro bar. Se li apriamo, |
| |
aprire, |
| |
puoi vedere che è un file crittografato. |
| |
Quindi questo è fondamentalmente ciò che potremmo dare al cliente |
| |
e non avere così tanto lavoro meccanico. Wayne ha detto che |
| |
ha frustrato meno gli sviluppatori e, personalmente, penso che sia un eufemismo, perché farlo ripetutamente era molto frustrante prima di riuscirci, e questo ci ha aiutato molto. |
| |
Quello. |
| Wayne Levin |
Ora, per quanto riguarda la crittografia, quando si distribuisce un componente aggiuntivo |
| |
per l'uso da parte degli utenti all'interno di un'azienda, in genere non si desidera, per motivi di sicurezza e così via, che nessuno possa accedervi e |
| |
Gestire il codice. Sai, quel genere di cose, quindi potremmo consegnare un codice non criptato solo per, sai, in modo che il cliente abbia il suo codice criptato, ma per la consegna all'utente finale, in genere si desidera che tutto sia criptato, in modo che non possa essere manomesso. Solo una di quelle cose. |
| Vince Faller |
Sì, e questa è la fine della mia demo. Wayne, se vuoi riportarla indietro per concludere. |
| Wayne Levin |
Sì, fantastico. |
| |
Certo, grazie mille per questo, Vince. Quindi ci sono molte parti in movimento in tutto questo sistema, quindi, sai, fondamentalmente, si tratta di assicurarci di avere, |
| |
Sai, il codice viene sviluppato da più utenti che non si scontrano tra loro. Stiamo integrando la documentazione contemporaneamente. E in realtà, la documentazione viene distribuita insieme all'applicazione e non dobbiamo integrarla. È... |
| |
Abbiamo configurato l'infrastruttura in modo che venga gestita automaticamente. Possiamo aggiornarla, insieme al codice, in modo completo e simultaneo. |
| |
se vuoi. I test di Hamcrest in corso, ciascuna di quelle funzioni scritte, |
| |
Ci sono risultati attesi, se vogliamo. Quindi vengono confrontati e abbiamo visto, brevemente, che c'era, credo, qualche problema con quell'equazione. Un R al quadrato o qualcosa del genere ha restituito un valore diverso, |
| |
quindi si è rotto, in altre parole, per dire ehi, qualcosa non va qui; mi aspettavo questo output dalla funzione |
| |
Per un caso d'uso. Questa è una delle cose che riceviamo dai clienti: creiamo un pool di casi d'uso che trasformiamo in test Hamcrest e via. Ci sono altre slide qui che |
| |
Sono a vostra disposizione, ad esempio, quando scaricate le slide. Quindi ve le lascio a disposizione ed ecco una piccola immagine della pipeline. |
| |
Quello che stiamo utilizzando e anche un po' sull'attività di revisione del codice per gli sviluppatori. Se vuoi approfondire, Vince, vuoi aggiungere qualcosa su come avviene la revisione e l'approvazione del codice? |
| Vince Faller |
Sì, quindi all'interno della richiesta di unione |
| |
avrà il codice JSL sulle differenze del codice. E ancora, un grande |
| |
grazie a |
| |
Anche le persone che hanno creato Hamcrest, perché hanno anche avviato un lexer(?) per GitHub e GitLab per poter leggere JSL, quindi in realtà questo si trova all'interno di getlab. |
| |
E possono anche leggere il JSL. Non lo esegue, ma ha una bella formattazione. Non è solo testo bianco, è bellissimo. Entriamo nel dettaglio, |
| |
Come in questo screenshot, clicchi su una riga, inserisci un commento a piacere e il task diventa un'attività revisionabile. Cerchiamo quindi di fare il più possibile all'interno di GitLab. |
| |
per motivi di trasparenza, e |
| |
Una volta chiuso tutto, puoi dire sì, la mia richiesta di merge è pronta. Mettiamola nel ramo master, nel ramo principale. |
| Wayne Levin |
Fantastico. Quindi stai davvero... sta aiutando, sai, stiamo davvero definendo gli standard di codifica, se vuoi, e |
| |
Non mi piace la parola "applicazione", ma è proprio questo il significato. E riduce la variabilità. Rende più facile per più sviluppatori, se vogliamo, capire cosa... |
| |
Ciò che altri hanno fatto. E man mano che coinvolgiamo nuovi sviluppatori, questi imparano a comprendere lo standard e sanno cosa cercare, sanno cosa fare. |
| |
Quindi... rende l'onboarding molto più semplice e, ancora una volta, si occupa... di tutto, che è collegato a tutto qui, quindi sai, di supporto e così via. |
| |
Questa è la diapositiva che ho menzionato prima, solo per alcune risorse, quindi stiamo usando GitLab. Suppongo che gli stessi principi si applichino a qualsiasi git in generale, come GitHub o simili. Ecco il link alla community di Hamcrest. C'è stata una presentazione a |
| |
A Tucson, nel 2019, ai vecchi tempi, quando viaggiavamo e ci incontravamo. È stato molto divertente. Ed ecco il link al marketplace per le immagini... Visual Code Studio. |
| |
Visual Studio Code, cosa ne pensi? |
| |
Quindi, come ha detto Vince, sì, usiamo molto quell'editor, invece di usare l'editor JMP integrato, semplicemente perché è completamente integrato. È... |
| |
È tutto parte di un unico grande ambiente di sviluppo applicativo. E con questo, Vince e io, a nome mio e di Vince, voglio ringraziarvi per il vostro interesse e, ancora una volta, vogliamo ringraziare di cuore il team di JMP. Justin Chilton e soci, |
| |
Ti chiamo. Se non fosse stato per Hamcrest, non saremmo qui. Quello era |
| |
il pezzo mancante o è stato il pezzo abilitante che ci ha davvero permesso di portare lo sviluppo JSL a, |
| |
In pratica, il tipo di standard che ci si aspetta nello sviluppo del codice, in generale, nell'industria. Quindi ne siamo davvero grati, e so che il nostro... |
| |
Sai, questo viene propagato con ogni applicazione che abbiamo distribuito. E a questo punto, Vince e io siamo lieti di rispondere a qualsiasi domanda... |
| |
info@predictum.com e ci verrà inoltrato e ti risponderemo. Ma a questo punto, apriremo la discussione con le domande e risposte. |