Post on 15-Apr-2017
Cum să nu aruncăm nave spațiale
în aer
Sabin Marcu
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
Sabin Marcu
• Startup în Analytics
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
Sabin Marcu
• Startup în Analytics
• Developer (nu Web Developer / Java Developer, etc)
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
Sabin Marcu
• Startup în Analytics
• Developer (nu Web Developer / Java Developer, etc)• Participant InfoEducație (4 ani) – 2 participări la proba Open
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
Sabin Marcu
• Startup în Analytics
• Developer (nu Web Developer / Java Developer, etc)• Participant InfoEducație (4 ani) – 2 participări la proba Open• Experiență:
๏ Java, C++, PHP, JavaScript ๏ Proiecte de la CMS / Sisteme întregi, la librării și experimente ๏ Exemplu relevant: github.com/sabinmarcu/js-trans-compat-check
(teste pentru verificarea compatibilității între diferite limbaje ce se compilează în JavaScript 1.5)
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
Sabin Marcu
• Startup în Analytics
• Developer (nu Web Developer / Java Developer, etc)• Participant InfoEducație (4 ani) – 2 participări la proba Open• Experiență:
๏ Java, C++, PHP, JavaScript ๏ Proiecte de la CMS / Sisteme întregi, la librării și experimente ๏ Exemplu relevant: github.com/sabinmarcu/js-trans-compat-check
(teste pentru verificarea compatibilității între diferite limbaje ce se compilează în JavaScript 1.5)
• Research în Citizen Science
! twitter.com/sabinmarcu " facebook.com/sabinmarcu # linkedin.com/in/sabinmarcu $ github.com/sabinmarcu
• De ce ne trebuie testing, și ce înseamnă de fapt testing
• Testare Automată
• Testarea Interfețelor
• Integrare Continuă (continuous testing)
Navete Spațiale?
Mars Climate Orbiter [1]
Mars Climate Orbiter [1]
• Misiune NASA & Lockheed
Mars Climate Orbiter [1]
• Misiune NASA & Lockheed• Lansat în 1998
Mars Climate Orbiter [1]
• Misiune NASA & Lockheed• Lansat în 1998
• În 1999 s-a dezintegrat în atmosfera planetei Marte
[1] https://www.wikiwand.com/en/Mars_Climate_Orbiter
Mars Climate Orbiter [1]
• Misiune NASA & Lockheed• Lansat în 1998
• În 1999 s-a dezintegrat în atmosfera planetei Marte• NASA și Lockheed au folosit unități de măsură diferite (lbs s | N s)
YouTube Video Count Break [1]
YouTube Video Count Break [1]
• YouTube până în 2014 folosea Integer pe 32 de biți pentru a stoca numărul de vizualizări al unui videoclip (maxim 2,147,483,647)
YouTube Video Count Break [1]
• YouTube până în 2014 folosea Integer pe 32 de biți pentru a stoca numărul de vizualizări al unui videoclip (maxim 2,147,483,647)
• Gangnam Style [2] a fost primul astfel videoclip ce a depășit această limită
[1] http://goo.gl/Pwh7Es [2] https://www.youtube.com/watch?v=9bZkp7q19f0
YouTube Video Count Break [1]
• YouTube până în 2014 folosea Integer pe 32 de biți pentru a stoca numărul de vizualizări al unui videoclip (maxim 2,147,483,647)
• Gangnam Style [2] a fost primul astfel videoclip ce a depășit această limită
• Acum, după acel eveniment, limita este de 9,223,372,036,854,775,808 vizualizări (64 de biți)
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
#define FALSE 0 #define TRUE !FALSE
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
#define FALSE 0 #define TRUE !FALSE
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
DefineProperty(object, “myproperty”, { get: function() { return this.myproperty; }.bind(object)
});
#define TRUE FALSE
#define FALSE 0 #define TRUE !FALSE
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
DefineProperty(object, “myproperty”, { get: function() { return this.myproperty; }.bind(object)
});
#define TRUE FALSE
#define FALSE 0 #define TRUE !FALSE
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
DefineProperty(object, “myproperty”, { get: function() { return this.myproperty; }.bind(object)
});#!/bin/bash while true; do $0 done
#define TRUE FALSE
#define FALSE 0 #define TRUE !FALSE
if (!((_ok) ? true : (Math.random() > 0.1))) { return res; }
#define TRUE random()%2
DefineProperty(object, “myproperty”, { get: function() { return this.myproperty; }.bind(object)
});#!/bin/bash while true; do $0 done
TDDTest Driven Development
BDDBehaviour Driven Development
???
Linting
Linting• Not a compiler
Linting• Not a compiler• Not an interpreter
Linting• Not a compiler• Not an interpreter• Not a syntax checker (although it also does that)
Linting• Not a compiler• Not an interpreter• Not a syntax checker (although it also does that)
Linting• Not a compiler• Not an interpreter• Not a syntax checker (although it also does that)
Somewhere in between.
Demo
ChickenChicken chicken, chicken chicken chicken?
ChickenChicken chicken, chicken chicken chicken?
https://www.youtube.com/watch?v=yL_-1d9OSdk
http://phantomjs.org
https://slimerjs.org http://casperjs.org
Casper Demo
Travis CI
https://travis-ci.org
Travis CI
https://travis-ci.org