Press "Enter" to skip to content

GOTO 2017 • Code as Risk • Kevlin Henney


[Musica]
a destra, quindi sono così dov’è l’architettura
inizia per me l’architettura alla fine
inizia e finisce nel codice perché
questa è la cosa che alla fine è reale
e molte persone tendono a considerare
il codice per essere un dettaglio il problema è questo
questo è esattamente ciò che il software è
il software è un sacco di dettagli
messo insieme in un modo particolare è
no, non è come se agitassimo le mani
che nelle riunioni potremmo farlo a
Lavagne bianche potrebbe aiutarci a pensare
a volte potrebbe impedirci di
pensando ma alla fine viene fuori
il dettaglio è dove effettivamente
succede e quindi non sono così ho questo
tipo di problema qui è che io sono nel
pista di sicurezza e tu sai a parte
sentirsi ragionevolmente al sicuro dentro di me
si tratta di sicurezza
me io non questo non è una zona di
specializzazione, ma una cosa è
specializzato o piuttosto un’area di
l’interesse per cui gli occhi si specializzano è
pratica di codifica che codifica la qualità in che modo
costruisce fino a essere la cosa più grande e
si scopre che c’è una sorprendente sovrapposizione
tra queste due aree, se lo si desidera
ridurre la superficie di attacco del tuo
il software non va bene solo guardando dentro
una direzione e dicendo l’abbiamo
coperto da quadri o questi ragazzi hanno
tirati indietro, usiamo il giusto
sistema operativo è un 360 completo e io
voglio coprire un aspetto di ciò che
è spesso trascurato quindi il mio background e
Mi interessa profondamente del codice e modificato
questo libro alcuni anni fa e anche io
mi preoccupo per l’ immagine più grande così ho
ho un paio di libri lì con la parola
architettura software nel titolo che
mi qualifica immediatamente per parlare
questo credo che sia tutto ciò di cui hai bisogno ma
c’è qualcos’altro che sono noto per a
alcuni anni fa ho iniziato a prendere
fotografie di guasti software in
luoghi pubblici e questo è tutto
questo è il 2000 e
sei 2006 al terminal dell’aeroporto di Madrid 1
e questo è un fallimento abbastanza visibile
penso che sia giusto dire che c’è un sacco di
persone che vagano attraverso il tipo di sguardo
a questo e si può tipo di individuare il
una specie di gente più nerd ogni volta
questo genere di cose accadono perché loro
tipo di rallentare e provare e risolvere
quale sistema operativo è su cosa
lavori scopre che avevo erroneamente identificato questo
per anni e qualcuno ha indicato correttamente
fuori ma questo era in realtà un 16-bit
stack di rete ma erroneamente identificati
come Windows ho rintracciato ulteriormente
questo è DOS questo è un messaggio DOS di a
particolare stack di rete questo è DOS
nel 2006 l’ ok dos era morto, eravamo noi
è stato il fatto che è morto da così tanto tempo che noi
ora pensa che il do S significhi negazione di
servizio e questo è quello che stai ricevendo
qui ok questo è un enorme era questo è un
enorme messaggio di errore intendo sabato ha preso
due fotografie sì è proprio come può
Lo ricordo molto vividamente perché il mio
secondo il mio secondo figlio era solo lui
aveva solo pochi mesi ed è così
praticamente gli ho lanciato lo stile di rugby
mia moglie da prendere mentre ho tirato fuori il mio
fotocamera per scattare una foto di quello
perché tutti gli altri si chiedono whoa
guarda i pacchetti gratuiti è quello che le persone
sintonizzarsi improvvisamente sulla parola libera
tutto è buono perché è gratuito
comunque ho capito di essere abbastanza bene ora
iniziato a farlo a volte in mezzo
parla di qualcosa e anche io prendo
schermate così dato che stiamo andando
indietro alcuni anni per alcuni di voi
questo può essere un bel ricordo sì sì
dì quanti anni ha perché sono ancora
usando Mozilla sai e io ero usato
il ricordo che stavo cercando di vedere a
amico mio, visitalo in immersione
diretto e volevo un treno precedente
a quanto pare non ci sono treni precedenti
ci sono c’è solo java.lang ottenuto un
NullPointerException
e lo uso in una conferenza in
Amsterdam, un paio d’anni dopo
questo ho preso questa immagine e qualcuno è venuto
fino a me dopo e disse
Kaplan si sanno di avere ancora quel bug
sul sito e questo è questo è questo è
tipo di dove il penny è caduto dove io
iniziato a renderci conto che noi falliamo noi
imparare molto su un sistema noi
non semplicemente conoscere la sua tecnologia
la tecnologia sottostante noi se tu
non avevo indovinato che fosse Java perché
qualcuno ha deciso di intonacare il
tecnologia su tutto l’URL perché dire che è
un servizio perché le persone mettono ASP JSP in PHP
ecc. nei loro URL
non hanno imparato l’incapsulamento
okay niente dice nulla dice
incapsulamento come una traccia di pila okay
ciao questo è lo sviluppo completo dello stack
questo è un sito Hilton come lei va avanti
per te lì se vuoi sapere
quello che stanno usando su questo sito si
va bene se vuoi scoprire il
le vulnerabilità c’è un software
lista di controllo lì, ma questo è l’altro
cosa stai imparando riguardo a te
imparare come oh come un semplice
come ha fatto un semplice errore come questo
attraverso non dovrebbe esserci una grande prova
prendere che fondamentalmente non dice nulla
niente di crudo esce di qui ok se
succede qualcosa di brutto diciamo che lo diciamo
l’utente li presentiamo con un messaggio
e diciamo che sai cosa mi dispiace
le cose non hanno funzionato e lo facciamo dentro
Inglese o lo facciamo in olandese ma noi
non farlo in Java ok, c’è un’idea
quindi come potrebbe questa cosa ovvia
significa che è una cosa ovvia
controllare mentalmente questo controllo
nessuna eccezione si diffonde attraverso questo
confine quindi per quanto riguarda i confini
sempre sui confini, quindi cosa?
cosa è successo ora non posso dirti cosa
è successo ma possiamo buttarne un po ‘
teorie quindi forse erano gli sviluppatori
non consapevoli di questo forse erano nuovi
a Java
forse erano affrettati forse loro
erano contro le scadenze forse erano
affrettato forse questo codice è stato archiviato
forse sotto pressione dalla direzione
questo è tutto fuorviante e nessuno
in realtà curato perché non era il loro
interessa il fatto che ne siano occorsi due
anni per loro per risolvere questo in realtà loro
in realtà riscritto il sito e il prossimo
volta ho controllato cosa ti dice
sulla gestione e sul
organizzazione intorno ad esso in altre parole in
fallimento, in realtà riveliamo un profondo
qualcosa di molto più profondo su come a
il sistema è costruito ma in questi giorni non lo faccio
prendere più queste fotografie
perché la gente me li manda, oh grazie
per il modello a oggetti che ora posso vedere
rivela sì gente li inviano a
me
quindi sì, ho finito
migliaia di queste immagini che le persone
mi hanno mandato e in effetti ce l’ha
ottenuto al punto che qualcuno di recente
coniato una frase per lui là apparentemente
Sono io sono nove scopo è stato ora utilizzato I
sono schermi di Kevin Henny e tu
sapere una volta che hai un aggettivo allora
sai che qualcun altro ha detto oh eh Kevin
A quanto pare Henny ce n’è più di uno
di me che disturba leggermente ma
ma sì , eccoti qui che il mio nome
è arrivato al punto che all’agile
nella conferenza della città a Bristol dove
Io vivo l’anno scorso uno degli organizzatori
John Classen si avvicinò a me, disse Kevin
c’è uno schermo al piano di sotto che voglio
fare una fotografia con te che punta
ad esso poi tweetterò poi te
di retweet così abbiamo sorta di diritto lì si
sapere che il serpente sta mangiando la coda
a questo punto va bene, ma questo è un
cosa interessante la domanda che hai
chiedere questi sono tutti questi sono tutti
fallimenti A che diversi livelli nella
sistema ma questa è una pista sulla sicurezza
e la domanda che ti ho posto è ciò che è
la differenza tra un fallimento e a
fallimento Qual è la differenza tra a
difetto in un aspetto e difetto in
un altro, perché un paio di settimane fa un sacco di
la gente mi stava mandando questi da tutti
in Germania il sistema ferroviario che ho a
coppia dal NHS nel Regno Unito questi
ransomware questo è il desiderio di piangere malware
questo è così c’è una domanda che cos’è
la differenza tra uno di questi e
l’ altro dal punto di vista dell’utente
c’è una cosa che non possono più farlo
è successo lì l’anno scorso a San
Francisco e molte persone sono stati liberati
cavalca per alcuni giorni a causa di
ransomware ok l’intera faccenda è stata presa
giù e alcuni di questi sono basati su
attacchi di spear phishing e quindi il
elemento umano ma alla fine c’è il
Pensa che se riesci a guidare un cuneo
da qualche parte in un
tu sai qualcosa di suo
vulnerabilità e questo caso particolare
questo ha a che fare con il non avere il diritto
versioni del software come in esecuzione
cose come XP che sono definitivamente passate
la loro data di scadenza ma il punto lì
è che queste vulnerabilità esistono e
esistono a tutti i livelli dall’interno del
codice completamente fuori dal livello umano
ora non abbiamo intenzione di affrontare
direttamente con il livello umano ma io voglio
per rendere il punto qui che l’utente
esperienza di questi dal punto di un utente
di vista sono utenti quasi equivalenti
esperienza e l’esperienza di sicurezza
che mi piace molto è che fanno che il sesso
va bene, sai che è molto
Ochs come on vieni che tipo è
esperienza di sicurezza sesso sì, ma io voglio
parlare di qualcos’altro perché
mentre alcuni di questo vengono da questo
viene dall’esperienza del programmatore
com’è essere nel codice?
perché le persone non sono generalmente uno di
le cose che ho scoperto sono queste
le persone nello sviluppo del software sono
generalmente non stupido o malizioso ok
ma sono spesso in fretta sono
spesso confuso da molteplici priorità
c’è così tanto da sapere che non puoi
conosci tutto e quindi c’è questa idea
che abbiamo bisogno di un ambiente decente in
quale lavorare quale è il programmatore
esperienza spesso parliamo di
architettura di uno spazio come solo significato
struttura ma dal mio punto di vista
l’architettura non è semplicemente una struttura
accordo definisce la qualità di
vivere o lavorare in un luogo particolare
Qual è la qualità di essere in quel
codice qual è la qualità del lavoro
all’interno di quell’ambiente sai se
trascorrerai otto ore al giorno
c’è come si sente?
comodo ti piace andare lì dentro
o pensi di sapere forse te
ho bisogno di indossare l’armatura okay è un it’s it’s
un altro giorno 10.000 lezioni di linea sono io
contro la classe sai cosa c’è
sta per essere non ci sono prove giuste
la tua volontà prima di entrare, così è
l’intera idea qual è l’ esperienza del programma
e vediamo che questo influisce su questo
è dove i dettagli sono importanti perché e
questo è anche il luogo dove troviamo l’equivalenza
così 2014 c’erano due errori SSL che
nasce da situazioni di codifica molto semplici
andare a fallire e senza cuore sì, ecco un
estratto
Ho preso questo forte e mi riferisco al mio
articolo dei clan un po ‘più tardi ma ecco un
Estraiamo della cosa go-a fallire ora noi
può avere vari dibattiti sul
meriti o demeriti del go-to ma questo
non è che provenga da un molto più grande
contesto non è immediatamente evidente
che è corretto e non è ovvio
che è sbagliato e questo è il punto
questo è un dettaglio di una linea che è
un dettaglio
ricorda quei dettagli che la gente dice oh
non preoccuparti, è solo un dettaglio
risulta essere la differenza tra a
sistema che funziona e un sistema che lo fa
non un sistema che ha vulnerabilità così
tutta l’architettura è fondata sul
i dettagli alla fine si riducono al
qualità della tua malta la qualità di
le viti devono essere coerenti tutte
la via attraverso quindi la codifica
pratica è importante notare che
non c’è quasi differenza tra
quello e questa ricreazione del bug AT & T
nel 1990, che sostanzialmente eliminò il
rete telefonica per circa 150 milioni
abbonati in Nord America a
nei giorni feriali in un’epoca in cui le persone
effettivamente utilizzare i telefoni come telefonia
dispositivi in modo che sia un sacco di business e
questo viene giù perché il
il programmatore non stava davvero pensando
dritto e appena avuto una sorta di bambola
Mi limiterò a mettere una pausa qui
questo è equivalente a un rifiuto di
attacco di servizio questo è il punto questi
le cose accadono che rivelano
vulnerabilità che negano alle nostre persone
accesso a cose che ci danno molto
esperienza utente scarsa quindi questa idea in a
cito il ragazzo locale Dijkstra la maggior parte dei nostri
i sistemi sono molto più complicati di
può essere considerato sano e lo è anche
disordinato e caotico da usare in tutta comodità
e fiducia e questo è vero per il
fuori ma è anche vero per il
dentro è quello che sta succedendo all’interno del
sistema a cui dobbiamo preoccuparci qui
Quindi cerchiamo di avere un po ‘di uno sguardo
struttura e sappiamo qualsiasi cosa
risulta che in realtà sappiamo molto
Cita da parte di GERD Holtzman chi è lui
uno dei principali architetti capo
designer e sviluppatori del JPL della NASA
laboratorio e ha diretto il software
sviluppo per
il rover Mars Curiosity che è uno di
i pezzi più belli dell’hardware spaziale in
esistenza e ha scritto questo meraviglioso pezzo
per le comunicazioni della ACM una coppia
di anni fa codice Mars e si può ottenere
una sola lettura libera fortemente
consiglia questo in quel sito lì
sono le precauzioni standard che possono aiutare
ridurre il rischio in sistemi software complessi
e li elenca questo include il
definizione di un buon software
architettura basata su una separazione netta
di dati preoccupanti che nascondono la modularità
interfacce ben definite installano un forte
meccanismi di protezione dai guasti che durano
uno è chiaramente molto specifico per il contesto
hai bisogno di meccanismi di protezione dai guasti se
stai per mettere una sonda su un’altra
pianeta perché si scopre se va
giù non puoi facilmente solo oh ok ok
inviare qualcosa nella stanza del server e
premi il pulsante se potessimo inviare alcuni
amici nella stanza del server e farlo
abbiamo persone su Marte, ma non è così
sta per accadere proprio ora così che duri
uno è molto specifico per il contesto, ma guarda
la precedente separazione delle preoccupazioni
la modularità che nasconde i dati è ben definita
interfacce questi termini sono così vecchi che
praticamente uscire con il
le ossa dei dinosauri vanno bene, queste non sono nuove
concetti e lo sta facendo perché
sta dicendo bene questo è come lo fai
roba comprensibile questo è come un essere umano
essere può capire qualcosa come su
terra dovresti dire che un sistema
sai bene come stai?
per dire che è robusto come stai
dovrei dire tutte queste cose a meno
in realtà puoi ragionare e
affrontarlo nei suoi termini così ho
un altro interesse tra molti intendo
ovviamente mi piace fotografare
libri e gestisco una pagina su cosa succede
Facebook ha chiamato parola venerdì e parola
Venerdì ogni venerdì devo nominare
suggerisco di definire una definizione di
parola insolita e il resto della settimana I
concentrati solo sulla linguistica e altro
vocabolario e quindi è tutto molto divertente ma
dato che mi piace un mi piace davvero
dizionari solo per il loro bene I
pensavo di andare a dare un’occhiata al
dizionario per le parole che ho usato
nel mio codice di titolo come rischio ho intenzione di
dì che è abbastanza facile, basta
concentrarsi sul codice per un momento codifica un insieme di
spero che le istruzioni per un computer
sono tutti a mio agio con questo lo so
è subito dopo pranzo, ma si spera
siamo tutti
con questo un programma per computer o un
parte che sono fuori ancora questo farà
percepire un sistema di parole figure o
simboli usati per rappresentare gli altri
soprattutto ai fini della segretezza
ah sì, si scopre che molte persone che
scrivi il codice di scrittura del codice che conosci
di guardarlo andare come Kevin sei
guardando sottosopra oh hai ragione
yeah non riuscivo a capire se era strano
furred no no no non lo ha offuscato
solo il mio stile naturale, quindi il punto lì
è che vogliamo non capiremo
il che significa che non capiremo l’intento
voglio essere in grado di desiderare il nostro codice
abbastanza letteralmente per essere ragionevole essere
in grado di ragionare su di esso il classico
senso della parola, ma ce n’è un’altra
significato della parola codice che penso
è interessante qui una serie di convenzioni
o principi che governano il comportamento o
attività in un dominio particolare un codice
di condotta per esempio l’insieme di
pratiche che arriverà uno sviluppatore
al codice e collaborare con il team
i membri che è il codice per così dire va bene
quindi guardiamo al rischio, ora il rischio è spesso
spesso frainteso molte persone dicono
Oh il rischio è incertezza o il rischio è pericoloso
o è pericoloso non è che è molto è
tanto quanto sono specificamente definito
così andiamo in giro e scaviamo intorno a trovare un
situazione che comporta esposizione al pericolo
e questi sono due elementi che stiamo andando
vedere correre attraverso questa possibilità
o il pericolo di perdita commerciale molto
specifico che viene utilizzato nel
prodotto del settore assicurativo del
conseguenza e probabilità di a
evento o fenomeno pericoloso ah ora
questo è interessante perché in realtà
questo è che abbiamo effettivamente ottenuto un’equazione
qui ci vuole prende l’idea di base
che possiamo vedere l’esposizione a a
proposizione di cui si è incerti
non si tratta di incertezza, si tratta di
l’esposizione all’incertezza è molto
sottile distinzione se ti metti
in modo dannoso, allora sta chiaramente andando
ad essere una proposta peggiore di mantenere
te stesso fuori dal pericolo e così là
è questa idea di esposizione all’incertezza
il rischio è qualcosa che possiamo fare qualcosa
in altre parole possiamo ridurre
esposizione possiamo ridurre l’incertezza di
facendo un certo numero di cose diverse e
risulta pochissime di queste cose su
tu
ma c’è anche un cambiamento di mentalità coca-cola
pepperdine qualche anno fa ha twittato questo
uno a me la funzionalità è un codice di asset
è una responsabilità
comunque pensando che sia davvero
interessante perché ho speso il
parte migliore della mia carriera cercando di
convincere la gente che il codice è un bene
scopre che questi sono entrambi
contemporaneamente veri ma ci offrono
prospettive diverse l’idea è quella
ciò che le persone vogliono è la funzionalità quando
scarichi un nuovo framework ecco cosa
vuoi funzionalità il fatto che tu
potrebbe essere in grado di vedere il codice sorgente
è fantastico ma normalmente quello che vuoi
è la funzionalità che desideri anche tu
fiducia nella funzionalità in altri
le parole si vuole un sistema attorno ad esso che
sistema è un sistema di persone una comunità
un senso che altre persone hanno usato questo
software e l’hai fatto in modo affidabile
vuoi il senso di attività che il
il sistema è vivo piuttosto che morto se il
l’ultimo check-in è stato cinque anni fa
allora forse non toccare ok vuoi
quel tipo di reattività e
reattività che vuoi sentire al di là di te
vuoi che il sistema oltre il sistema lo faccia
parli stai cercando qualcosa di molto
specifica che diventa il bene così
ma perché il codice catalizzatore è il
responsabilità bene voglio che tu immagini un
cambia al sistema attuale che sei
lavorare su ok fatto bene è stato facile
ciò che impedisce di farlo
qual è l’attrito che ti impedisce
dall’applicare un cambiamento risulta essere
il codice il codice è la cosa che
ti impedisce di cambiare il codice ora
Perché questo è un utile costrutto bene
scopre che cosa fanno le aziende quando
riconoscono di avere responsabilità se
hai una responsabilità finanziaria che guardi
è come un falco si assicuratevi
minimizza il tuo ma non si tratta di
eliminazione delle passività ci sono
pochissime aziende che hanno zero
responsabilità che stanno cercando di fare
capisci l’equilibrio che sono
capendo il trade-off che non fanno
voglio che le loro passività si esauriscano
di controllo e cancellare le loro risorse così
questo è quello che fai , ecco perché il codice come a
la responsabilità è in realtà piuttosto utile
costruisci perché significa che lo guardi
come un falco ti assicuri di averne meno
di esso piuttosto che più ne fai
sicuro che tu possa capirlo così quando
qualcuno dice che non ho idea di cosa sia
sta succedendo in questo sottosistema, ma sembra
lavorare sembra non essere abbastanza buono
il fatto che tu non avessi idea che sia un
responsabilità che non hai esposto
te stesso a rischiare e non hai idea
c’è incertezza lì dentro che non lo fai
voglio essere in quella posizione così l’idea
che è una responsabilità è davvero utile
modo di pensare a questo proposito si vuole
minimizzarlo si vuole che sia esattamente
quello che vuoi tu non vuoi il codice morto
non vuoi codice incomprensibile
voglio essere in grado di capirlo e
che tutto è necessario
parte in modo che quando le cose cambiano perché
si scopre che è uno dei più
cose popolari per mai capitare a un pezzo
di software ma gli umani sono molto cattivi
riconoscendo questo usiamo parole come fatto
l’abbiamo persino elaborato, abbiamo persino
sollevato al potere ho anche sentito
la gente che va dun dun dun come se fosse così
in qualche modo asserire che è davvero fatto a
il sistema è fatto solo quando nessuno sta usando
si è abbandonato a quel punto va bene così
devi essere in grado di creare un
ambiente una situazione in cui è possibile
cambiare roba è piuttosto semplice
complessità di osservazione complessità
introduce dei bug quindi evitali
dove possibile e questo è il nostro
aspetto riduce le vulnerabilità se tu
evitare la complessità che produci
vulnerabilità quindi, di cosa parliamo?
a proposito di quando parliamo di codice
complessità e cose come tecniche
debito e così via di cui parliamo solo
refactoring ma voglio presentarti
a molto semplice molto semplice tipo di
regola della mano destra su come ragionare
sui cambiamenti nel tuo codice perché
quando parliamo delle proprietà del nostro
codice e quando usiamo il linguaggio di
i requisiti non sono molto buoni che abbiamo
questo pessimo vocabolario quando parliamo
sulla semantica di un sistema quando noi
parlare dei suoi comportamenti e
interazioni la sua correttezza generale noi
parlare di requisiti funzionali e
quindi chiedi alle persone okay, allora
gli altri requisiti e sei bloccato
per una parola e tu vai non funzionale
perché sono così importanti che non lo facciamo
anche avere una parola per loro e tu sei
dicendo quali sono questi requisiti
sono quelli che non sono quelli di te
sappiamo che siamo esseri umani ognuno naturale
linguaggio che gli umani hanno un vasto
vocabolario su cui attingere e il meglio di noi
può fare in inglese che ha trollato
abbastanza
saccheggiato ogni altra lingua sul
pianeta per il proprio vocabolario il migliore
possiamo venire con non è funzionale
il significato predefinito di non funzionale
L’inglese, a proposito, non funziona bene se
la lavatrice non è funzionale
non è una buona cosa che non lo siamo
parlando di disponibilità o meglio di noi
stiamo stiamo parlando di due completamente
mancanza di disponibilità non c’è un
la parola corretta ha chiamato te non funzionale
Bisogna darglielo ma l’altra cosa
facciamo è collude che combiniamo e
creare accidentalmente una categoria
non esiste ci sono tre categorie
oppure possiamo dividerli ulteriormente ma lì
sono tre categorie essenziali che lo faranno
aiutaci a concentrarci
c’è la roba funzionale c’è la
cose operative le cose esecutive
questo è il modo in cui esegue ciò che è suo
risorse e che dire del tempo?
questi altri illa T di cui parlano le persone
riguardo al manifestarsi a
runtime e quindi ora sono il
qualità dello sviluppo di un sistema sua
manutenibilità sua testabilità
questi sono libri di sviluppo che vedono il
primi due sono esperti in fase di esecuzione del
in fondo la categoria inferiore è
sperimentati dagli sviluppatori ora questi sono
non perfettamente ortogonale ma poi di nuovo
Né le mie dita, quindi non sono preoccupato
a riguardo ma è un pensiero utile
struttura perché ciò che significa è quando
stiamo ristrutturando ciò che stai facendo
stai rifattorizzando è che stai cercando di
tenere fermo l’ asse funzionale e
si sta cercando di migliorare qualcosa su
l’asse di sviluppo che stai cercando
dire che voglio che questo sia io più leggibile
voglio che questo sia più semplice che volevo usare
una versione più recente della lingua o
librerie proverai a cambiare qualcosa
su questo così uno rimane fisso e uno tu
andare a migliorare ma l’asse operativo
è aperto è una carta selvaggia che può andare
in entrambi i casi può diventare più veloce o più lento
diventano più o meno sicuri che possono
diventare più goloso per la memoria o
in realtà più snella nella memoria in
altre parole che non sono quello che siamo
concentrandoci su ce n’è un altro
funzione di preferire preservare
la trasformazione è l’altro modo
in giro
che ci concentriamo sulla funzionalità di noi
concentrarsi sul miglioramento di alcuni aspetti del
lato operativo con come
ottimizzazione delle prestazioni e lo sviluppo
l’aspetto è aperto, forse il codice diventa
Messier forse è meglio così con
questo in mente prendiamo solo un pezzo di
codice e refactoring e questo è un pezzo
di codice ero piuttosto una specie di
interessante perché stavo andando
qualche codice e poi scoprire che lei aveva
un pezzo di codice che giace intorno ad un altro
parlare che ho appena ottimizzato un po ‘
e questo è in realtà basato su qualcosa
da uno dei miei clienti e ho arrotondato
e ha cambiato tutto per proteggere il
innocente e colpevole ma è un pezzo
di codice C ++ e potremmo dire bene il
la prima parte della sicurezza è non usare C ++
si lo sai se sei un JavaScript
PROGRAMMATORE ti sei appena detto che
tutte le lingue giuste si espongono
più o meno a questo e sicuramente grezzo
lingue con un modello di memoria raw
come C e C ++ che aumentano il tuo
responsabilità ma tutte le cose che sto andando
guardare qui sono legati a te
applicare in altre lingue, quindi ecco a
pezzo di codice che ovviamente puoi
vedere alle spalle sì buono e quello che voglio
fare è voglio passare attraverso questo pezzo
di codice e semplificare perché il
l’obiettivo originale di questo era in realtà
semplificazione e poi ho capito che
metà di quello di cui stavo parlando
in realtà ha quello che si adatta direttamente con il
messaggio di ciò di cui stiamo parlando qui
stiamo riducendo l’idea del codice come rischio
quindi prima di tutto ti darò un
un rapido tour basta attraversarlo solo per
avere un senso di ciò che sono tutte le cose
che potenzialmente rivelano un qualche tipo di
vulnerabilità o coinvolti in qualche tipo
di vulnerabilità li vai così quelli
sono il tuo daltonico rosso-verde come me
questa è metà delle righe quindi wow andiamo
dare una rapida occhiata a questi tipi di ragazzi
abbiamo ottenuto un sacco di dichiarazioni
chiamato utilmente dichiarazioni proprio così
lo sai e abbiamo alcune informazioni
su come ottenere qualche configurazione e otteniamo
qualche altra config e poi ne prendiamo un po ‘
più config e facciamo cose così tanto
il codice è imperativo è tutto per il
facendo e poi finalmente lo facciamo
qualcosa di significativo facciamo una conversione
e poi ne facciamo ancora un po ‘
controllando e finalmente restituiamo qualcuno
un risultato okay , torniamo a questo
la prima cosa che noterò è
tutti questi meschini commenti vanno bene
è la cosa con cui hai intenzione di fare
molte sezioni che sono commentate eh
metodi che puoi considerare no, stai andando
correggere gli errori di ortografia
in questo momento controllalo ora cancellalo
okay, ho detto che sono in parole e
lingua che conosci che vado a controllare
quegli errori di ortografia che hanno davvero
mi ha infastidito ora, ora hai un
versione che ha la versione corretta
dei commenti dovrebbe qualcuno vuole
tornare indietro a questo va bene, quindi ci liberiamo
di loro va bene, passiamo attraverso il pezzo
pezzo ci sono tutte queste dichiarazioni up
nella parte superiore e vedere era un blocco
il linguaggio strutturato è ancora un blocco
linguaggio strutturato che significa che puoi
metti le variabili in blocchi un sacco di persone
Non sono a conoscenza di questo e mi ricordo
dicendo questo ad un collega e ha detto
oh, questo è solo il tuo folle C ++
puoi muoverti che puoi muovere che conosci
Ho detto no no, no , è C che puoi
in realtà guardano in knr che hanno
esempi ci sono così bene per quanto tempo
stato in linguaggio C.
Non so 1971-72 Oh, quindi facciamolo
ridistribuire le variabili in modo che noi
ridurre la distanza che aumentiamo il
la consapevolezza che abbiamo gli umani sono davvero
bravo a pezzi, quindi è un gioco per il nostro
punti di forza invece di giocare al nostro
debolezze siamo molto poveri quando le cose
sono frammentati su cui non possiamo ragionare
quindi permettiamo a qualcuno di ragionare
fiduciosamente del codice spostiamoci
cose dove devono essere così noi
fai così, è il primo passo e
la prossima cosa che farò è Ivan
questo codice era originariamente vecchio C ++ ma
è stato compilato usando un C ++ 11
compilatore e C ++ 11 c’è circa come
molta somiglianza con il classico C come forse
l’inglese moderno fa all’anglo-sassone è
si puoi compilare ma
c’è davvero molto di più lì
quindi cerchiamo di sistemare un paio di cose su di me
andando a riordinare alcune dichiarazioni e
continueremo a farlo , solo
messa a fuoco nel Abbiamo alcune cose in corso
Qui
guarda quello che sta andando bene
il problema qui sì, si scopre che sei
non otterrà mai un puntatore nullo
In questi casi questo è solo un codice rumoroso
impedisce alle persone di vedere effettivamente il
condizione non c’è situazione in cui
verrà restituito un null quindi quindi noi
sbarazzati di quello che possiamo desiderare di essere
memoria sicura quindi a volte le persone provano e
utilizzare un problema puntatore intelligente è questo
è un puntatore intelligente C ++ 98, quindi stiamo usando
versioni precedenti quindi questo è molto
importante osservazione generalizzata è
che tu
ti importa davvero quando le persone dicono che voglio
per aggiornare le cose quando la gente dice che voglio
usare una nuova libreria che voglio evitare
utilizzando le funzionalità deprecate hanno a
caso molto forte nei loro preferiti no
solo perché vogliono provare nuovi splendenti
cose ma ho intenzione di riferirti
torna all’idea che il vecchio codice è vecchio
è più probabile che le librerie siano errori
incline e più probabile avere
vulnerabilità quindi quindi c’è un
buona ragione per rimanere aggiornati con
roba Il puntatore automatico è deprecato, quindi noi
non dovrebbe usare che dovremmo usare unico
puntatore tuttavia questo è troppo presto nel
processo per modificare la firma del
metodo così ho intenzione di spostare quella fuori
e stiamo solo andando a mantenerlo privato
e torneremo quando cambiamo il
firma e ho intenzione di cambiare il
firma al momento perché come
linguaggio tipizzato staticamente hai un sacco
di eccitazione nel rompere le cose così
non facciamolo solo ora ok ora il
prossima cosa la prossima cosa è un po ‘
Poco più interessante la prossima cosa
sto andando a concentrarmi su queste cose
esempio hai questi piccoli simili
questa è l’ossessione che le persone hanno con
usando un linguaggio simile
C ++ usando un linguaggio che effettivamente fa
avere alcuni bit e pezzi di alto livello
e poi ignorandoli completamente noi
generalmente chiamiamo questo C + okay così siamo
useremo le stringhe eccetto che non lo siamo
useremo davvero le stringhe che stiamo andando
per usare le stringhe e poi abbiamo intenzione di andare
dentro di loro e noi andremo sì
Vado fuori quel puntatore
di te so che hai detto che eri un bravo
oggetto stringa ma voglio davvero il tuo raw
puntatori di caratteri che voglio vedere come null
sai che è proprio come questo è questo è
chirurgia della serratura con un martello ora
il problema è abbastanza curiosamente
questo funziona per caso c’è un dato
i dati di funzione non ne garantiscono il nulla
terminato che è qualcosa che C ha
un’opinione molto forte su if
qualcosa non è terminato nulla ottieni
molte possibilità eccitanti per oh
questo è buffer traboccare uno di loro
ancora uno dei più popolari al mondo
forme di attacco si scopre che c ++
11 ho fatto questo, ma ha anche detto
siamo indietro quando tu se vuoi il
stringa c sottostante che puoi chiedere educatamente
puoi manifestare la tua intenzione e dire
Voglio il rettilineo C non solo
vuoi che i tuoi dati siano un nome terribile
comunque per qualsiasi cosa
Peter Hilton e lo spazio nel
Paesi Bassi ha fatto uno studio sulla variabile
nomina il nome della variabile più popolare
più di un personaggio risulta
essere dati o github server risulta
il secondo più popolare è anche il dato
va bene, è molto minore, ma facciamolo
passare ad un’altra area che è lì
tutte queste cose velociste se vuoi
vulnerabilità la sua stampa incisa molto
le persone non si limitano a formattare una stringa
printf è un interprete è un
linguaggio non è molto lontano da
fondamentalmente dicendo che desidero valutare
contenuto per favore invito il tuo invito
i tuoi attacchi per iniezione che invito
Scripting cross-site di tutto questo Esther
è il gateway questo è il gateway e
tutto il resto in altre lingue che
ha un Evo o qualsiasi tipo di interprete
devi riconoscerlo ogni volta
stai usando qualcosa come printf è
un intero linguaggio e consente tutti i tipi
di cose eccitanti quindi è a un livello
equivalente a una forma molto modesta di valutazione
e non è qualcosa che vuoi veramente
è convenientemente scritto vicino a questo
sì, il classico esempio di un’iniezione
l’attacco è splendidamente coperto da questo
xkcd ciao, questo è il tuo punteggio sonore
avere qualche problema con il computer, oh mio Dio
ha rotto qualcosa in un certo modo
davvero chiamato tuo figlio Robert ecc ecc
oh sì, i tavoli di Bobby lo chiameremo
beh, abbiamo perso lo studente di quest’anno
record spero che tu sia felice e spero
hai imparato a disinfettare il tuo database
input questo è un punto I Oh remember I
detto prima sui confini, ecco cosa
è necessario proteggere è tutto sul
i confini in realtà non è davvero
importa se c’è C ++ nel nucleo di
la tua applicazione è la roba che è
al limite devi preoccuparti e
non sembra tutto come memoria di memoria
linguaggi basati si scopre che tu
può abbastanza felicemente interpretato
lingue più morbide lingue qualsiasi lingua
che ti consente di incorporare contenuti all’interno
qualcos’altro si apre immediatamente
queste possibilità il modo semplice di
guardando questi sono tutti sulla fuga
codici come ho osservato in passato ogni
scappare come un’entrata bene, ecco il
modo è necessario pensare a questa roba
hai bisogno di custodirlo molto molto
fortemente così possiamo sbarazzarcene e
di ‘ no che printf non dovrebbe essere lì
Posso usare una sicurezza più valida
Versione TV SN printf ma in realtà questo
è C ++ Posso semplificarlo ulteriormente
può effettivamente guardare il contenuto
capito che non dovremmo essere formattati
stringhe comunque per questo genere di cose
questi sono quasi sempre costanti e
progressivamente il codice riduce bene il
la prossima cosa che potrei fare è notare questo
l’ abitudine terribile è terribile ma popolare
Ho l’abitudine di avere un errore, quindi vado
per registrarlo e lanciare il log e lanciare il log
e butta se chiedi ad alcune persone cosa
il tuo sistema funziona bene per lo più registra
e getta fa qualcos’altro sì
abbiamo alcune cose in là su
assicurazione sai o forse è un gioco
piattaforma ma principalmente registra e getta
se si guarda ad alcune basi di codice che è
sembrano ciò che sembrano fare
dominato da questa roba quindi in teoria io
potrebbe ridurre questo, ma quello che ho intenzione di
faccio è lo farò passare e dire
sai cosa non mi interessa
Sto solo per dire che non è riuscito a connettersi
torneremo e affronteremo più tardi
beh forse no e perché mi piace il mio
codice per essere meno rumoroso c’è un terribile
ci sono un sacco di parentesi graffe aperte
puoi sbarazzartene e ridurlo a
una linea che la canzone ha alcune persone
escludere puoi farlo sì che puoi e
hai perfettamente il diritto di non farlo
la base del go-to fail ah bene lo sono
andando a farti conoscere un vero figo
idea è chiamato uno strumento di analisi statica
è un’estensione del tuo compilatore se
stai lavorando in una digitazione dinamica
lingua è necessario uno di questi
ok anche in altre parole l’ idea è
non limitarti a quello che è il compilatore
dice estendere la tua portata in modo che possiamo ingrandire
ora e possiamo notare questo tipo di
bella ripetizione gentile questo tipo di
culla a dormire Prendiamo su
qualcos’altro prendiamo sul
firma a questo punto mi sento a mio agio
facendo un cambiamento anch’io mi muoverò
Scommetto via da questo miserabile, credo di sì
chiamalo assemblatore orientato agli oggetti questo
piuttosto c’è un terribile svilimento di
lingua in cui la gente cammina e
sono solo vocabolario è creare e
ottenere e impostare e tutti questi tipi di
parole primitive che nessuno vuole mai
creare una connessione al server o meglio
abbiamo creato una connessione al server che abbiamo
ho una nuova espressione che non vuoi
crea una connessione al server quello che vuoi
fare è connettersi a un server okay sì
codice immagine al punto giusto stop
descrivendo l’assemblea
la versione del tuo codice comunica questo è
cosa serve per connettersi a un server
offrire al lettore il giusto livello di
l’astrazione comunica con loro è
un atto di comunicazione se tu
comunicare al tuo lettore lo faranno
senti che impareranno che questo è circa
la conoscenza riguarda la capacità di
motivo per cui dobbiamo andare dentro ok
configura il mio Configuration Manager:
il codice sugli incidenti prende bene i valori
proviamo a trasformarlo in
Istanza del gestore di configurazione in inglese
ottenere valore nessun gestore di configurazione
valore istanza di configure Hall we
non ho bisogno della parola manager lì chi
sapevo che sai che è proprio come le persone tipo
di riempire le loro parole oh yeah ecco
la cosa puoi chiamarla una cosa no io
bisogno di chiamarlo un controller di cosa
manager proxy sì, ma non è il
vero uno oh il controllo della cosa astratta
del tuo proxy, sì , abbiamo un
fabbrica per quello sì che facciamo e quello
indovina come si chiama no no no no no
smettila è una cosa chiamala com’è ora
c’è ancora un problema con questo ora a
molte persone pensano oh oh Kevin sta andando
per parlare del sì di Singleton che è
ci vai quando abbiamo finito e perché
c’è un altro problema qui, sì, è un
whisky si è meglio per il tuo codice
okay, questo è tutto ciò che devi sapere, sì
c’era un articolo pubblicato l’anno scorso
usandolo come usando la sua conferenza in anticipo
rilevamento di errori di configurazione a
ridurre il danno in caso di danni
abbiamo appena usato tutto questo noi
in realtà non ho fatto molte convalide
quello che abbiamo fatto in quel codice era il controllo
se i dati che era vuoto
è stato scoperto che studiare attraverso
un numero di sistemi e applicando a
strumento particolare che non è il focus
di questo discorso che studierò lo dimostrerò in molti
del software maturo di oggi ampiamente utilizzato
i sistemi sono soggetti a latenza
errori di configurazione nel loro criticamente
configurazioni importanti quelle correlate
all’affidabilità e tutto il resto di lei
errore di configurazione latente che è a
modo educato per dire che non l’abbiamo controllato
quando abbiamo corso ok lo abbiamo ottenuto all’inizio
punto d’ uso succede qualcosa di brutto come
spesso ben oltre c’è un bel po ‘largo
gamma di alcuni sistemi è oltre il 90% di
queste configurazioni non hanno
codice speciale per il controllo del
correttezza delle loro impostazioni al
tempo di inizializzazione del sistema
impostazioni su tutto ciò che le impostazioni
su chi sta usando il sistema che è
impostazioni tutto su come funziona il sistema
e questi non sono controllati ora questo può
dare errori di runtime eccitanti ma
inoltre apre e rivela e ingrandisce e
Attacca la superficie, quindi la prima cosa
faremo è che lo faremo
osserva che questo non è un singleton
problema non è il lavoro di questa funzione
sapere come convalidare questi due
aspetti della configurazione è il lavoro di
chiunque lo chiami, lo spostiamo
chiunque lo chiami, sono responsabili
per questo, perché questo codice si trasforma out
ripetuto dappertutto chiunque
ti dà i dati infatti si scopre
c’è un altro aspetto ed è qui
Ho intenzione di andare contro uno dei
osservazioni classiche da john postal
ce l’hai fatta in uno dei primi
RFC s per TCP postale è la legge che usiamo spesso
come un modo di descrivere generali sai
accettabilità o tolleranza codice essere
conservatore in quello che fai essere liberale
in quello che accetti effettivamente dagli altri
Penso che sia troppo generale
ci siamo conservati in quello che fai, ma sii
conservatore in ciò da cui accetti
altri in realtà è il tuo lavoro
il tuo codice per essere il più rigido possibile
e questo vale sia nel grande
e nel piccolo e se questo significa
certe cose non si collegano, allora è così
bene ora che ti dà una migliore a lungo termine
compatibilità in quanto le persone cambiano gli standard
ma risulta anche irrilevante
nel contesto del tuo codice, perché sono io
accettare l’ indirizzo di stringhe non è un
l’ indirizzo dritto n non è una stringa a
la porta non è una stringa che abbiamo già
tipi per quelli dallo standard amico
c libreria quindi non sto cambiando il
linguaggio qui, ma in realtà sto mostrando
questo è quello che puoi fare se tu
attualmente usi la lingua ora che puoi
notiamo che siamo riusciti a ridurre a
quantità sorprendente di codice che ho cambiato
dimensione del carattere potrei cambiarlo di nuovo e
in realtà riempire lo schermo e poi noi
guarda un po ‘ più da vicino perché
scopre che non è il lavoro di un
oggetto se un’unità non può essere un oggetto
creato correttamente non ha un
conversazione con lei stai bene si
stanno bene per te, noi siamo bravi no, no?
un lavoro come costruzione dell’oggetto
se non riesci a creare
un’istanza valida quindi non hai un
istanza valida è così semplice come sembra
per esistenziale profondo e molto semplice
concetto quindi dovrebbe fallire
creazione che ci consente ciò che tu
sapere cosa effettivamente non abbiamo bisogno di nessuno di
questo codice a tutti risulta che è uno
dei miei esercizi di refactoring preferiti a
questo punto potrebbe essere qualsiasi lingua
perché si scopre che è la stessa idea
abbiamo certe abitudini tutte queste
cose che diciamo un codice cattivo codice scadente
e così via non vengono creati casualmente
sono creati attraverso determinati
abitudini sistematiche e quello era uno dei
le cose che il mio cliente aveva avuto
il log e l’abitudine di gettare avevano il
legare in ritardo una configurazione tramite a
abitudine singleton avevano un numero di
queste cose e se scrivi codice come
che puoi trasformare ciao mondo in un
capolavoro aziendale va bene
è malato che la gente non crei il codice
a caso è un approccio sistematico così
osservazioni da questa prima osservazione
Non esiste un codice più veloce nessun codice hanno
qualche guida intelligente alla progettazione
programmi non c’è nessun codice più sicuro
di nessun codice è veramente difficile
incidere qualcosa che non è lì e
questa è una delle cose chiave che vuoi
ridurre la superficie ridurre il
volume quindi abbiamo altre cose e via
bene, va bene, stiamo usando javascript
così circa un anno fa si scopre che a
molte persone dipendevano da alcune righe di
codice e per vari motivi che erano
Non ho intenzione di andare qui l’autore
di quel codice tirato tirare questo codice da
NPM e grandi parti Internet si sono fermati
lavorando quindi diamo un’occhiata a questo
codice che è davvero importante ora se tu
avere il codice sorgente aperto ti saluto è
un grande contributo e questo è quello
meraviglioso ma non necessariamente
significa che è buona una delle altre cose
sull’open source si raccolgono altri
le opinioni delle persone vedono cosa dicono
il loro feedback ma per essere onesti qui
questo non è necessariamente il massimo
codice ma fa qualcosa di molto banale
estrae una stringa che risulta molto
di persone includevano questo solo per
Tira fuori una stringa che sto per fare
andando a suggerire che questo non è uno di
quei problemi veramente difficili
questo è forse qualcosa di questo
dovremmo essere in grado di fare quando questo è
tirato qualcuno è andato e lo ha sostituito
con questo che in realtà è più complesso
e mostra alcuni leggermente più profondi
incomprensioni del codice che mi rende
uno spettacolo
La legge di Anson devo ancora vedere qualsiasi
problema comunque complicato quale quando
hai guardato nel modo giusto no
diventare ancora più complicato di cui abbiamo bisogno
si sta muovendo nella direzione opposta ma
non è per quello che sono , non è per quello che sono
qui perché non c’era davvero un
problema di sicurezza lì o c’era
perché siamo seri, stiamo prendendo
sulle dipendenze ci stiamo imbattendo in inutili
dipendenze se non stai vedendo l’ oh
veramente
serie di titoli di battute questi sono
meraviglioso perché il codice scritto da alcuni
sconosciuto su Internet è sempre
perfetto, quindi le persone dipendono solo da
roba e loro dipendono da cose che io
non avere alcun problema con te a seconda di
roba se sai che stai dipendendo
su di esso il problema è che molte persone lo hanno fatto
non so che c’era un transitivo
dipendenza non lo sapevano
era seduto sotto quello che avevano scelto
e le dipendenze fanno parte del tuo
architettura così quando qualcuno va avanti
e questo è ciò che è
senza precedenti e ce n’era un sacco
discussione su questo hey utenti NPM sinistra
le imbottiture erano inedite e rompevano un sacco
di fatture da correggere siamo pubblicazione annullata
su richiesta del nuovo proprietario
Aspetta un sacco di siti web fuori
ci si sta semplicemente prendendo fiducia a
pezzo di codice e ora qualcuno è in grado
per caricare solo una versione alternativa
ora cosa succede se lo sviluppatore originale
deciso di farlo e invece di averlo
questo poi lo ha sostituito con qualcosa
con un po ‘di divertimento quindi cerchiamo di essere
molto serio qui quando hai un
dipendenza da qualcos’altro e da te
gironzolare per proteggere i nostri sistemi
allora una di queste affermazioni non lo è
correggi devi proteggerti
i confini questo è quando guardiamo quando noi
parlare di architettura uno dei
definizione è gli ufficiali Grady Booch
sulle decisioni architettoniche dell’architettura
tendono a concentrarsi sulla PI identificazione
controllare le scene in un sistema che
sono descritti in termini di interfacce e
meccanismo ora normalmente pensiamo puramente
in termini di astrazioni della
lingua ma ogni volta che si presenta un
limite di processo il tuo limite di dll un vaso
limite o uno qualsiasi di questi limiti
stai dicendo qualcosa di significativo
su chi arriva a toccare e distribuire questi
cose queste sono una delle più semplici
modi in cui sai rivelare un’insicurezza
nel sistema e solo spoofing in non
spoofing abilmente sul filo ma giusto
spoofing tramite repository o spoofing via
l’ID utente di qualcuno perché risulta
che sì, le persone sono a volte le
link più debole se riesci a ottenere uno dei
gli sviluppatori puoi ottenere il loro login allora
puoi fare tutti i tipi di cose quindi è a
molto semplice idea sai la tua
dipendenze e qual è la criticità
di quelle cose così Maya laico è
osservazione meravigliosa è intorno al 1980
ha detto come l’umanità ha realizzato sempre di più
sul software che controlla il
computer che a loro volta vanno in società
diventa cruciale che le persone controllano
assolutamente i programmi e i processi di
che sono prodotti in tutto il
vita utile del programma e questo è a
punto qui stai controllando
dipendenze quando si dice che useremo
biblioteca in che misura sei
controllando quella dipendenza hai te
salvaguardato che cosa hai pensato
su di esso cosa succede se ciò che accade se questo è
portato via è un’ottima domanda
quali sono le conseguenze di ciò che è stato preso
via se le conseguenze sono minime
allora va bene, ma è necessario
valutalo prima di arrivare al loro
conclusione ma per quanto riguarda i processi
quindi tornerò a qualcosa
menzionato all’inizio del microfono
Il pezzo di Bland è davvero una lunga lettura
ospitato è un saggio molte parti
ospitato sul sito di Martin Fowler e andare a
fallire nel test di unità
cultura e ne ha fatti davvero
punti importanti qui e lui esplora
tutti questi dettagli come dice lui
i bug sono tanto istruttivi quanto lo sono
erano devastanti erano sradicati
nello stesso ottimismo del programmatore
eccesso di fiducia e fretta che sciopero
progetti di tutte le dimensioni e domini questi
gli insetti suscitano la mia passione perché ho visto
e ha vissuto i benefici del test unitario
quindi sta pensando da questi punti
vista fammi solo tornare a quella sinistra
esempio di pad c’era questo e c’era
questo ho finito per fare questo
e lo ha sostituito leggermente più recente
versione di JavaScript quindi c’è un
in più c’è una linea in meno lì ma io
posso dirti che non è così
funzionalmente equivalente a questi due ora
sicuramente quando si sostituisce qualcosa
dovrebbe essere l’ equivalenza funzionale
bene come faccio a sapere questo e quali sono i
le differenze bene ho scritto una molto semplice
prova serie di test che sai che puoi mettere
su due diapositive incluso il framework
questo è quello che succede quando esegui il
prova questo è lo schermo che ottieni quando
tu esegui i test contro il mio codice per
pad sinistro è lo schermo che ottieni e
il rosso significa cattivo quando lo si esegue contro
l’altro dente risulta non solo
ma la gente che lo usava non era una sicurezza
vulnerabilità, ma in realtà non abbastanza
fai la cosa giusta così è stato in realtà
sbagliato questo è tutto ciò di cui hai bisogno
fidarsi di queste cose è per questo che noi
avere osservazioni come questa da
Il test di Neal Ford è l’ingegneria
il rigore dello sviluppo del software è molto
molto quell’idea di qualcosa che dà un
senso della realtà e forza per cosa
stai lavorando, li lascerò fare
vai prima perché sono educato, ma lo sono
andando a voglio chiudere considerando
quando guardiamo a testare qual è il ruolo
di testare qui bene ho perso il focus su come
fai test fammi solo presentarti
tre diversi modi di pensare c’è
un approccio passivo che possiamo chiamare
semplice conteggio delle unità vecchie che è
scrivi il codice che hai testato dopo ok no
troppo tempo dopo, ma prova dopo averlo fatto
ha un approccio attivo che è dove
il codice in realtà non esiste te
crea attivamente il codice e i test
a fianco meglio conosciuto come test-driven
sviluppo ma quello che Mike bland usa
in un articolo era estesamente
qualcosa che potremmo chiamare difetti DDT
guidato testando l’idea che in risposta
a un’osservazione esterna o a
bug che hai trovato c’è un
insicurezza o solo un utente fastidio voi
sono in grado di scrivere un test che
lo rileva e dimostra il tuo sistema
non ha questa vulnerabilità
non ho questa debolezza è molto
semplice idea e questo è molto più ricco
idea perché c’è quest’altra carta
dall’uso Nick osserva semplici test
può prevenire la maggior parte dei fallimenti critici come
molto si rivela su un particolare sistema
stavano guardando specificamente il
non fatali sono gli errori fatali che erano
guardando
era circa il 77% della produzione entrambi
potrebbe essere riprodotto da un test unitario così
questo è tre quarti ora per alcuni
la gente che è sorprendentemente alto per
alcune persone sono inamidabili Leeloo
comunque è un numero è un numero tu
può fare qualcosa con questo è un numero
non raggiungerai mai in anticipo
necessariamente ma retrospettivamente è possibile
c’è questa idea che questo non è fatto
è sempre un processo continuo così è
c’è qualcosa di buono che sto per lasciare
questo per le diapositive si scopre il
guida cert sai top ten well top
dodici pratiche di codifica sicure più della metà
di loro hanno a che fare con la qualità del codice e
test di base quindi questa idea che questi
non sono extra opzionali a volte
loro sì, ci occuperemo del codice
il college l’anno prossimo quest’anno vogliamo
rendere sicuro il nostro codice che vogliamo rendere nostro
sistema sicuro ma non lo faremo
tocca il codice per farlo è come no
questo è uno di questi è uno dei
superfici che devi affrontare
perché vuoi che il tuo sistema abbia il
qualità classiche di un’architettura
queste sono le qualità che il romano
l’architetto Vitruvio osservò un bene
costruirlo dovrebbe essere fermo dovrebbe essere
robusto dovrebbe essere forte dovrebbe essere
resiliente dovrebbe essere utile dovrebbe
servire a uno scopo e dovrebbe funzionare
quello scopo e poi se des venus il
dea della bellezza che dovresti avere anche tu
dovrebbe essere anche un po ‘estetico
qualcosa che posso essere umano
apprezzare e come essere umano nel
codice voglio poterlo apprezzare
a quei termini, grazie mille
[Applausi]

Please follow and like us: