Testing the Hard Stuff and Staying Sane. John Hughes
|
|
- Brianne Pitts
- 6 years ago
- Views:
Transcription
1 Testing the Hard Stuff and Staying Sane John Hughes
2 Why is testing hard? n features O(n) 23 ) test cases 3 4 tests per triples pairs race of feature conditions of features
3 Don t write tests! Generate them
4 Problem How do we know whether an arbitrary test has passed or failed? expected results can t be used general properties can be checked Property-based testing
5 QuickCheck 1999 invented by Koen Claessen and myself (ICFP 2000), in Haskell, for purely functional code 2006 Quviq founded marketing Erlang version State machines, race condition testing, etc Lots of fun solving challenging testing problems in the field
6 What does it do? API under test A minimal failing example
7 Let s see it in action
8 State Machine Models Erlang API Calls API Calls API Calls API Calls postconditions Erlang Model state Model state Model state Model state Erlang
9 Example put 1 put 2 get put 3 get [] [1] [1,2] [2] [2,3] 1 2
10 Code Fragments: specifying get get_pre(s) -> S#state.ptr /= undefined andalso S#state.contents /= []. get_next(s,_value,_args) -> S#state{contents=tl(S#state.contents)}. get_post(s,_args,res) -> eq(res,hd(s#state.contents)). Precondition State transition Postcondition
11 Time for some tests!
12 Lessons The same property can find many different bugs Minimal failing tests make diagnosis easy
13
14 Doing it for real 500 pages of specifications
15 Theory Car manufacturers should be able to buy code from different providers and have them work seamlessly together
16 Practice VOLVO's experience has been that this is often not the case
17 ~20,000 lines of QuickCheck code Vendor code 3,000 pages of pdfs
18 A Bug in a vendor s CAN stack 1 sent send priority 1 send priority 2 send priority 3 tx_confirm sending 1 queued sending 3 19
19 The Problem CAN bus identifiers determine bus priority
20 A Bug in a vendor s CAN stack send priority 1 sending 1 send priority 2 queued 1 sent send priority 3 tx_confirm sending 3 Failed to mask off the top bit before comparing priorities 21
21 AutoSAR results > 200 issues discovered > 100 bugs in the standard Test code 9x smaller than conventional TTCN- 3 tests and tests more! Test code 3-6x smaller than implementations
22 Riak: a no-sql distributed database Network partition Eventual consistency Data is replicated on 3 different nodes Thanks to: Dave Smith, Jon Meredith, Scott Fritchie
23 Data loss! A Riak bug
24 What does it mean? QuickCheck found An extreme failure scenario Leading to loss of data A failure of eventual consistency So is Riak buggy?
25 "We know there is a lurking bug somewhere in the dets code. We have got 'bad object' and 'premature eof' every other month the last year. We have not been able to track the bug down since the dets files is repaired automatically next time it is opened. Tobbe Törnqvist, Klarna, 2007
26 What is it? Application Mnesia Dets File system Invoicing services for web shops Distributed database: transactions, distribution, replication Tuple storage Race conditions?
27 Imagine Testing This dispenser:take_ticket() dispenser:reset()
28 A Unit Test in Erlang test_dispenser() -> ok = reset(), 1 = take_ticket(), 2 = take_ticket(), 3 = take_ticket(), ok = reset(), 1 = take_ticket(). Expected results
29 Modelling the dispenser reset take take take ok 1 2 3
30 A Parallel Unit Test reset ok take_ticket take_ticket take_ticket Three possible correct outcomes!
31 Another Parallel Test reset take_ticket take_ticket take_ticket take_ticket reset 30 possible correct outcomes!
32 Deciding a Parallel Test reset ok take 1 take 3 take
33 Let s run some tests
34 take_ticket() -> N = read(), Prefix: write(n+1), N+1. Parallel: 1. dispenser:take_ticket() --> 1 2. dispenser:take_ticket() --> 1 Result: no_possible_interleaving
35 dets Tuple store: {Key, Value1, Value2 } Operations: insert(table,listoftuples) delete(table,key) insert_new(table,listoftuples) Model: List of tuples (almost)
36 QuickCheck Specification > 6,000 LOC <100 LOC
37 Bug #1 Prefix: Types: open_file(dets_table,[{type,bag}]) --> Name = name() dets_table Parallel: 1. insert(dets_table,[]) Bool = bool() --> ok insert_new(name, Objects) -> Bool Objects = object() [object()] 2. insert_new(dets_table,[]) --> ok Result: no_possible_interleaving
38 Bug #2 Prefix: open_file(dets_table,[{type,set}]) --> dets_table Parallel: 1. insert(dets_table,{0,0}) --> ok 2. insert_new(dets_table,{0,0}) --> time out =ERROR REPORT==== 4-Oct-2010::17:08:21 === ** dets: Bug was found when accessing table dets_table
39 Bug #3 Prefix: open_file(dets_table,[{type,set}]) --> dets_table Parallel: 1. open_file(dets_table,[{type,set}]) --> dets_table 2. insert(dets_table,{0,0}) --> ok get_contents(dets_table) --> [] Result: no_possible_interleaving!
40 Is the file corrupt?
41 Bug #4 Prefix: open_file(dets_table,[{type,bag}]) --> dets_table close(dets_table) --> ok open_file(dets_table,[{type,bag}]) --> dets_table Parallel: 1. lookup(dets_table,0) --> [] 2. insert(dets_table,{0,0}) --> ok 3. insert(dets_table,{0,0}) --> ok Result: ok premature eof
42 Bug #5 Prefix: open_file(dets_table,[{type,set}]) --> dets_table insert(dets_table,[{1,0}]) --> ok Parallel: 1. lookup(dets_table,0) --> [] delete(dets_table,1) --> ok 2. open_file(dets_table,[{type,set}]) --> dets_table Result: ok false bad object
43 "We know there is a lurking bug somewhere in the dets code. We have got 'bad object' and 'premature eof' every other month the last year. Tobbe Törnqvist, Klarna, 2007 Each bug fixed the day after reporting the failing case
44 Before After Files over 1GB? Rehashing? > 6 weeks of effort! Database with one record! 5 calls to reproduce < 1 day to fix
45 Property-based testing Lets us test more with less effort Finds bugs in everything we test
46 Don t write tests Generate them!
47 Where to find out more Haskell QuickCheck The original ICFP 2000 Quviq QuickCheck Commercial tool & services Many, many tools inspired by QuickCheck ScalaCheck, FsCheck, test.generate
48 What does it feel like? Docs QC Spec Code
49
50 Properties vs test cases Code sizes for the Flexray interface: Lines of code TTCN-3 test cases QuickCheck and Erlang 9x smaller code! and it tests more!
51 Properties vs implementations Code QuickCheck 0 CAN DEM FlexRay COM The test code is 3 6x smaller than the implementation
Property-based testing, race conditions, and QuickCheck. John Hughes
Property-based testing, race conditions, and QuickCheck John Hughes QuickCheck in a Nutshell Properties Test Test case case Test Test case case Test case Minimal Test case Benefits Less time spent writing
More informationBe#er Tes(ng with Less Work: QuickCheck Tes(ng in Prac(ce. John Hughes
Be#er Tes(ng with Less Work: QuickCheck Tes(ng in Prac(ce John Hughes QuickCheck in a Nutshell Proper(es Test Test case case Test Test case case Test case Minimal Test case Benefits Less (me spent wri(ng
More informationTesting. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]
Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a
More informationQuickCheck, SmallCheck & Reach: Automated Testing in Haskell. Tom Shackell
QuickCheck, SmallCheck & Reach: Automated Testing in Haskell By Tom Shackell A Brief Introduction to Haskell Haskell is a purely functional language. Based on the idea of evaluation of mathematical functions
More informationQuickCheck Mini for Elixir. Thomas Arts Quviq AB
QuickCheck Mini for Elixir Thomas Arts Quviq AB From Unit test to Property Most developers agree that writing unit tests is useful. but also quickly gets boring An example: Does Erlang lists:seq(n,m) do
More informationAUTO-CAAS: Model-Based Fault Prediction and Diagnosis of Automotive Software
AUTO-CAAS: Model-Based Fault Prediction and Diagnosis of Automotive Software Wojciech Mostowski Halmstad University, Sweden AstaZero Researchers Day 2016 hhse Outline 1 Project overview 2 Consortium 3
More informationTesting for the Unexpected
Erlang Solutions Ltd. Testing for the Unexpected Ulf Wiger, CTO Erlang Solutions Ltd QCon, London 2011 1999-2011 Erlang Solutions Ltd. About me Spent 4 years in Alaska working on Military Command & Control
More informationWebDriver: Controlling your Web Browser
WebDriver: Controlling your Web Browser Erlang User Conference 2013 Hans Svensson, Quviq AB hans.svensson@quviq.com First, a confession... I have a confession to make... I have built a web system! In PHP!...
More informationBreaking your code in new and exciting ways. Michael Newton
Breaking your code in new and exciting ways Michael Newton (@mavnn) Who am I? 15below telling you your flight s been delayed for 15 years and counting Keeping up with the latest hammers Open source (personal
More informationSoftware System Design and Implementation
Software System Design and Implementation Property-based Testing Gabriele Keller The University of New South Wales School of Computer Science and Engineering Sydney, Australia COMP3141 17s1 Testing in
More informationMnesia Backend Plugin Framework and a LevelDB Based Plugin Presented on EUC by
Erlang Solutions Ltd Mnesia Backend Plugin Framework and a LevelDB Based Plugin Presented 2012-05-28 on EUC by Roland Karlsson - ESL Malcolm Matalka - Klarna Introduction Malcolm Matalka - Joined Klarna
More informationTESTING WEB SERVICES WITH WEBDRIVER AND QUICKCHECK
TESTING WEB SERVICES WITH WEBDRIVER AND QUICKCHECK Alex Gerdes (joint work with Thomas Arts, John Hughes, Hans Svensson and Ulf Norell) QuviQ AB ABOUT ME From the Netherlands, now living in Sweden Worked
More informationLarge-scale Game Messaging in Erlang at IMVU
Large-scale Game Messaging in Erlang at IMVU Jon Watte Technical Director, IMVU Inc @jwatte / #erlangfactory Presentation Overview Describe the problem Low-latency game messaging and state distribution
More informationAll you need is fun. Cons T Åhs Keeper of The Code
All you need is fun Cons T Åhs Keeper of The Code cons@klarna.com Cons T Åhs Keeper of The Code at klarna Architecture - The Big Picture Development - getting ideas to work Code Quality - care about the
More informationFinding Race Conditions in Erlang with QuickCheck and PULSE
Finding Race Conditions in Erlang with QuickCheck and PULSE Koen Claessen Michał Pałka Nicholas Smallbone Chalmers University of Technology, Gothenburg, Sweden koen@chalmers.se michal.palka@chalmers.se
More informationIntroduction to Functional Programming. Slides by Koen Claessen and Emil Axelsson
Introduction to Functional Programming Slides by Koen Claessen and Emil Axelsson Goal of the Course Start from the basics Learn to write small-to-medium sized programs in Haskell Introduce basic concepts
More informationDriven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions.
News Caesar CRM 2018 R1 Driven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions. Do you want to increase your sales, customer loyalty and
More informationHow does ML deal with +?
How does ML deal with +? Moscow ML version 2.00 (June 2000) - op +; > val it = fn : int * int -> int - 1 + 1; > val it = 2 : int - 1.0 + 1.0; > val it = 2.0 : real - false + false;! Overloaded + cannot
More informationCS11 Introduction to C++ Fall Lecture 7
CS11 Introduction to C++ Fall 2012-2013 Lecture 7 Computer Strategy Game n Want to write a turn-based strategy game for the computer n Need different kinds of units for the game Different capabilities,
More informationPapers we love - Utrecht
Papers we love - Utrecht QuickCheck Wouter Swierstra 1 Requirements for a topic A paper that I love 2 Requirements for a topic A paper that I love A paper that is interesting to academics and developers
More informationStatic Contract Checking for Haskell
Static Contract Checking for Haskell Dana N. Xu INRIA France Work done at University of Cambridge Simon Peyton Jones Microsoft Research Cambridge Joint work with Koen Claessen Chalmers University of Technology
More informationFinding Race Conditionsduring
Finding Race Conditionsduring UnitTesting with QuickCheck John Hughes (Quviq/Chalmers) Koen Claessen, Michal Palka, Nick Smallbone (Chalmers) Thomas Arts, Hans Svensson (Quviq/Chalmers) UlfWiger, (ErlangTrainingand
More informationCSE 143. Programming is... Principles of Programming and Software Engineering. The Software Lifecycle. Software Lifecycle in HW
Principles of Programming and Software Engineering Textbook: hapter 1 ++ Programming Style Guide on the web) Programming is......just the beginning! Building good software is hard Why? And what does "good"
More informationErlang in the battlefield. Łukasz Kubica Telco BSS R&D Department Cracow Erlang Factory Lite, 2013
Erlang in the battlefield Łukasz Kubica Telco BSS R&D Department Cracow Erlang Factory Lite, 2013 Agenda Introduction to the SCM Erlang vm and upgrades Tracing Mnesia Final thoughts Questions 2 The Session
More informationDon t Judge Software by Its (Code) Coverage
Author manuscript, published in "SAFECOMP 2013 - Workshop CARS (2nd Workshop on Critical Automotive applications : Robustness & Safety) of the 32nd International Conference on Computer Safety, Reliability
More informationGRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) DOWNLOAD EBOOK : GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) PDF
GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) DOWNLOAD EBOOK : GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD Click link bellow and free register to download ebook: GRAPHIC DESIGN THEORY:
More informationErlang Programming. for Multi-core. Ulf Wiger. QCON London, March 12 th,
Erlang Programming Erlang Training and Consulting Ltd for Multi-core QCON London, March 12 th, 2009 http://www.protest-project.eu/ Ulf Wiger ulf.wiger@erlang-consulting.com The age of multicore Fraction
More informationDistributed Objects. Object-Oriented Application Development
Distributed s -Oriented Application Development Procedural (non-object oriented) development Data: variables Behavior: procedures, subroutines, functions Languages: C, COBOL, Pascal Structured Programming
More informationTwo Testing Tools for the Erlang Ecosystem
Two Testing Tools for the Erlang Ecosystem Kostis Sagonas Some material is joint work with Andreas Löscher Stavros Aronis and Scott Lystig Fritchie PropEr proper.softlab.ntua.gr PropEr: A property-based
More informationEventually Consistent HTTP with Statebox and Riak
Eventually Consistent HTTP with Statebox and Riak Author: Bob Ippolito (@etrepum) Date: November 2011 Venue: QCon San Francisco 2011 1/62 Introduction This talk isn't really about web. It's about how we
More informationHoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré
Hoare Logic COMP2600 Formal Methods for Software Engineering Rajeev Goré Australian National University Semester 2, 2016 (Slides courtesy of Ranald Clouston) COMP 2600 Hoare Logic 1 Australian Capital
More informationProperty Based Testing : Shrinking Risk In Your Code. Amanda Pariveda Solutions Consultant Mined Minds Co-Founder
Property Based Testing : Shrinking Risk In Your Code Amanda Laucher @pandamonial Pariveda Solutions Consultant Mined Minds Co-Founder What is Property Based Testing? Patterns for specifying properties
More informationChoosing the web s future. Peter-Paul Koch Van Lanschot, 9 February 2017
Choosing the web s future Peter-Paul Koch http://quirksmode.org http://twitter.com/ppk Van Lanschot, 9 February 2017 Four problems 1. Web developers want to emulate native apps, which I think is not possible
More informationCS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L
CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your
More informationVector Clocks in Coq
Vector Clocks in Coq An Experience Report Christopher Meiklejohn Basho Technologies, Inc. Cambridge, MA 02139 cmeiklejohn@basho.com March 6, 2014 Outline of the talk Introduction Background Implementation
More informationData Structures. Datatype. Data structure. Today: Two examples. A model of something that we want to represent in our program
Datastructures Data Structures Datatype A model of something that we want to represent in our program Data structure A particular way of storing data How? Depending on what we want to do with the data
More informationTop 6 Mac user mistakes
E-book Top 6 Mac user mistakes! applecoursesonline.com Bad habits can damage your Mac, make it messy and definitely give it a shorter lifespan. Make sure you stop doing this! Print this e-book and have
More informationMap-Reduce. John Hughes
Map-Reduce John Hughes The Problem 850TB in 2006 The Solution? Thousands of commodity computers networked together 1,000 computers 850GB each How to make them work together? Early Days Hundreds of ad-hoc
More informationDependability tree 1
Dependability tree 1 Means for achieving dependability A combined use of methods can be applied as means for achieving dependability. These means can be classified into: 1. Fault Prevention techniques
More informationWrite for your audience
Comments Write for your audience Program documentation is for programmers, not end users There are two groups of programmers, and they need different kinds of documentation Some programmers need to use
More informationC++ Memory Model. Don t believe everything you read (from shared memory)
C++ Memory Model Don t believe everything you read (from shared memory) The Plan Why multithreading is hard Warm-up example Sequential Consistency Races and fences The happens-before relation The DRF guarantee
More informationDefault arguments, documentation
, documentation Comp Sci 1570 Introduction to C++ Outline 1 2 to functions A default parameter (also called an optional parameter or a default argument) is a function parameter that has a default value
More informationAn expressive semantics of mocking
An expressive semantics of mocking Josef Svenningsson 1, Hans Svensson 2, Nicholas Smallbone 1, Thomas Arts 2, Ulf Norell 1,2, and John Hughes 1,2 1 Chalmers University of Technology, Gothenburg, Sweden
More informationScaling CQUAL to millions of lines of code and millions of users p.1
Scaling CQUAL to millions of lines of code and millions of users Jeff Foster, Rob Johnson, John Kodumal and David Wagner {jfoster,rtjohnso,jkodumal,daw}@cs.berkeley.edu. UC Berkeley Scaling CQUAL to millions
More informationProperty-Based Testing for Coq. Cătălin Hrițcu
Property-Based Testing for Coq Cătălin Hrițcu Prosecco Reading Group - Friday, November 29, 2013 The own itch I m trying to scratch hard to devise correct safety and security enforcement mechanisms (static
More informationLectures 20, 21: Axiomatic Semantics
Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics
More informationCITS5501 Software Testing and Quality Assurance Formal methods
CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005
More informationCan We Trust SQL as a Data Analytics Tool?
Can We Trust SQL as a Data nalytics Tool? SQL The query language for relational databases International Standard since 1987 Implemented in all systems (free and commercial) $30B/year business Most common
More informationPlan of the lecture. Quick-Sort. Partition of lists (or using extra workspace) Quick-Sort ( 10.2) Quick-Sort Tree. Partitioning arrays
Plan of the lecture Quick-sort Lower bounds on comparison sorting Correctness of programs (loop invariants) Quick-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Lecture 16 1 Lecture 16 2 Quick-Sort (
More informationGuides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage
Guides for Installing MS SQL Server and Creating Your First Database Installing process Please see more guidelines on installing procedure on the class webpage 1. Make sure that you install a server with
More informationQGIS Application - Bug report #18988 QGIS Server rendering different from Desktop rendering
QGIS Application - Bug report #18988 QGIS Server rendering different from Desktop rendering 04:13 PM - Status: Closed Priority: rmal Assignee: Paul Blottiere Category: QGIS Server Affected QGIS version:3.1(master)
More informationData structures. Priority queues, binary heaps. Dr. Alex Gerdes DIT961 - VT 2018
Data structures Priority queues, binary heaps Dr. Alex Gerdes DIT961 - VT 2018 Announcements Course representatives - Mohamad Qutbuddin Habib - Carl Agrell - Gunnar Stenlund Kunsulttid: jag är på kontor
More information6.033 Lecture Fault Tolerant Computing 3/31/2014
6.033 Lecture 14 -- Fault Tolerant Computing 3/31/2014 So far what have we seen: Modularity RPC Processes Client / server Networking Implements client/server Seen a few examples of dealing with faults
More informationMap-Reduce (PFP Lecture 12) John Hughes
Map-Reduce (PFP Lecture 12) John Hughes The Problem 850TB in 2006 The Solution? Thousands of commodity computers networked together 1,000 computers 850GB each How to make them work together? Early Days
More informationAnalysis Tool Project
Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University
More informationMySQL X Protocol Talking to MySQL Directly over the Wire
MySQL X Protocol Talking to MySQL Directly over the Wire Simon J Mudd Percona Live Europe Amsterdam 5 th October 2016 Content What is MySQL X protocol How does it work Building
More informationWinter 2019 CISC101 1/17/2019
CISC101 Reminders Today TA emails are listed on the Labs page of the course web site. More assignments are posted. Commanding the CPU the use of a Stack. Computer Languages History of Python. Features
More informationErlang and Thrift for Web Development
Erlang and Thrift for Web Development Todd Lipcon (@tlipcon) Cloudera June 25, 2009 Introduction Erlang vs PHP Thrift A Case Study About Me Who s this dude who looks like he s 14? Built web sites in Perl,
More informationAdvanced Systems Lab (Intro and Administration) G. Alonso Systems Group
Advanced Systems Lab (Intro and Administration) G. Alonso Systems Group http://www.systems.ethz.ch Overview of the Course Focus on project Individual project during semester (3 milestones) This is a project
More informationSaturday, 5 September Good Morning.
Good Morning. Good Morning! ank you for inviting me. Saturday, 5 September 2009 Who? Jan Lehnardt Hacker Entrepreneur capitalizing words say we mean it I come from The Web Open Source makes me happy again!
More informationInside look at benchmarks Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering. Wednesday, August 17, 11
Inside look at benchmarks Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering Overview Purpose of benchmarks Who is involved? What kind of benchmarks exist out there? Benchmarks are
More informationA PropEr Talk. Kostis Sagonas. With PropEr help by Manolis Papadakis Eirini Arvaniti
A PropEr Talk Kostis Sagonas With PropEr help by Manolis Papadakis Eirini Arvaniti A PropEr announcement A PropEr question Why did you create PropEr? How Erlang modules used to look How modern Erlang modules
More informationHow to Improve Test Team Effectiveness Using Test Entities
How to Improve Test Team Effectiveness Using Test Entities John Kent: john.kent@simplytesting.com How to Improve Test Team Effectiveness using Test Entities Discussions at the Test Retreat A work in progress
More informationIos 7 Manual Restore From Icloud Slow >>>CLICK HERE<<<
Ios 7 Manual Restore From Icloud Slow Learn how to stop an icloud Restore that is stuck in progress in less than a minute. the content, maybe up to a day on a slow connection and an almost full iphone,
More informationQuickCheck: Beyond the Basics
QuickCheck: Beyond the Basics Dave Laing May 13, 2014 Basic QuickCheck Some properties reverse_involutive :: [Int] -> Bool reverse_involutive xs = xs == (reverse. reverse) xs sort_idempotent :: [Int] ->
More informationCODE CENTRIC: T-SQL PROGRAMMING WITH STORED PROCEDURES AND TRIGGERS BY GARTH WELLS
CODE CENTRIC: T-SQL PROGRAMMING WITH STORED PROCEDURES AND TRIGGERS BY GARTH WELLS DOWNLOAD EBOOK : CODE CENTRIC: T-SQL PROGRAMMING WITH STORED Click link bellow and free register to download ebook: CODE
More informationDR Planning. Presented by. Matt Stolk Associate Director Northwest Regional Data Center Florida State University
DR Planning Presented by Matt Stolk Associate Director Northwest Regional Data Center Florida State University Why are we here? Over the last couple of years, business continuity has become more of a priority
More informationAbstract Interpretation Using Laziness: Proving Conway s Lost Cosmological Theorem
Abstract Interpretation Using Laziness: Proving Conway s Lost Cosmological Theorem Kevin Watkins CMU CSD POP Seminar December 8, 2006 In partial fulfillment of the speaking skills requirement ? 2111 1231
More informationNetwork Security - ISA 656 Intro to Firewalls
Network Security - ISA 656 Intro to s Angelos Stavrou August 20, 2008 What s a Intro to s What s a Why Use s? Traditional s Advantages Philosophies Devices examining traffic making access control decisions
More informationCS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018
CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 Taken from assignments by Profs. Carl Offner and Ethan Bolker Part 1 - Modifying The Metacircular Evaluator
More informationCourse Overview. ECE 1779 Introduction to Cloud Computing. Marking. Class Mechanics. Eyal de Lara
ECE 1779 Introduction to Cloud Computing Eyal de Lara delara@cs.toronto.edu www.cs.toronto.edu/~delara/courses/ece1779 Course Overview Date Topic Sep 14 Introduction Sep 21 Python Sep 22 Tutorial: Python
More information=tg= Thomas H. Grohser, bwin
=tg= Thomas H. Grohser, bwin select * from =tg= @@Version Remark SQL 4.21 First SQL Server ever used (1994) SQL 6.0 First Log Shipping with failover SQL 6.5 First SQL Server Cluster (NT4.0 + Wolfpack)
More informationImplementing native IPv6 on DSL
Implementing native IPv6 on DSL Inventing the wheel marco@xs4all.net oktober 2010 Who is XS4ALL One of the oldest ISPs in the Netherlands Founded May 1st 1993 Originally as a not for profit Origins in
More informationPAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202
PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202 Assessments reminder Assignment 1: out this week, stage 1 due on 31 March (census date), stage 2 due after the teaching
More informationCS390 Principles of Concurrency and Parallelism. Lecture Notes for Lecture #5 2/2/2012. Author: Jared Hall
CS390 Principles of Concurrency and Parallelism Lecture Notes for Lecture #5 2/2/2012 Author: Jared Hall This lecture was the introduction the the programming language: Erlang. It is important to understand
More informationPlural and : Protocols in Practice. Jonathan Aldrich Workshop on Behavioral Types April School of Computer Science
Plural and : Protocols in Practice Jonathan Aldrich Workshop on Behavioral Types April 2011 School of Computer Science Empirical Study: Protocols in Java Object Protocol [Beckman, Kim, & A to appear in
More informationDatabase Architectures
Database Architectures CPS352: Database Systems Simon Miner Gordon College Last Revised: 4/15/15 Agenda Check-in Parallelism and Distributed Databases Technology Research Project Introduction to NoSQL
More informationSMBC: Engineering a Fast Solver in OCaml
SMBC: Engineering a Fast Solver in OCaml Simon Cruanes Veridis, Inria Nancy https://cedeela.fr/~simon/ 28th of March, 2017 Simon Cruanes SMBC 28th of March, 2017 1 / 17 Summary 1 Presentation of SMBC (
More informationSo far, we know: Wednesday, October 4, Thread_Programming Page 1
Thread_Programming Page 1 So far, we know: 11:50 AM How to create a thread via pthread_mutex_create How to end a thread via pthread_mutex_join How to lock inside a thread via pthread_mutex_lock and pthread_mutex_unlock.
More informationCreating the Fastest Possible Backups Using VMware Consolidated Backup. A Design Blueprint
Creating the Fastest Possible Backups Using VMware Consolidated Backup A Design Blueprint George Winter Technical Product Manager NetBackup Symantec Corporation Agenda Overview NetBackup for VMware and
More informationCSE Theory of Computing Fall 2017 Project 3: K-tape Turing Machine
CSE 30151 Theory of Computing Fall 2017 Project 3: K-tape Turing Machine Version 1: Oct. 23, 2017 1 Overview The goal of this project is to have each student understand at a deep level the functioning
More informationEventual Consistency. Eventual Consistency
Eventual Consistency Many systems: one or few processes perform updates How frequently should these updates be made available to other read-only processes? Examples: DNS: single naming authority per domain
More informationBackups and archives: What s the scoop?
E-Guide Backups and archives: What s the scoop? What s a backup and what s an archive? For starters, one of the differences worth noting is that a backup is always a copy while an archive should be original
More informationOracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios.
Oracle Mix A Case Study Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Vanity slide Vanity slide Ola Bini Vanity slide Ola Bini From Stockholm, Sweden Vanity
More informationFrom Types to Contracts
From Types to Contracts head [] = BAD head (x:xs) = x head :: [a] -> a (head 1) Bug! Type BAD means should not happen: crash null :: [a] - > Bool null [] = True null (x:xs) = False head {xs not (null xs)}
More informationCell Phone Upgrade Time Help!
Cell Phone Upgrade Time Help! Ok, team, I have Sprint and am due for an upgrade. I have the Samsung Galaxy S2 and have been pretty happy with it, and thought I would just bump up to the S4. But, I have
More informationMany applications. Lots of cascading subsystems (MySQL, Caches, foreign APIs, )
Fuse Let it crash & handle with grace 10 June 2014 Jesper Louis Andersen The problem Large complex Erlang systems cannot avoid: Many applications. Lots of cascading subsystems (MySQL, Caches, foreign APIs,
More information!"#$%&'())*'"+,&-,.-!! 1
!"#$%&'())*'"+,&-,.-!! 1 Thinking about thinking in code George V. Neville-Neil Ottawa, Canada What is this about? 3 What is this about? This is not about any particular BSD 3 What is this about? This
More informationBlack-box Testing Techniques
T-76.5613 Software Testing and Quality Assurance Lecture 4, 20.9.2006 Black-box Testing Techniques SoberIT Black-box test case design techniques Basic techniques Equivalence partitioning Boundary value
More informationFunctional Programming in Ruby
Functional Programming in Ruby Coding with Style koen handekyn This book is for sale at http://leanpub.com/functionalprogramminginruby This version was published on 2014-04-17 This is a Leanpub book. Leanpub
More informationReasoning About Imperative Programs. COS 441 Slides 10
Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions
More informationGuides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage
Guides for Installing MS SQL Server and Creating Your First Database Installing process Please see more guidelines on installing procedure on the class webpage 1. Make sure that you install a server with
More informationKey components of a lang. Deconstructing OCaml. In OCaml. Units of computation. In Java/Python. In OCaml. Units of computation.
Key components of a lang Deconstructing OCaml What makes up a language Units of computation Types Memory model In OCaml Units of computation In OCaml In Java/Python Expressions that evaluate to values
More informationIncoherent Rant about Code
Incoherent Rant about Code Aras Pranckevičius Unity Unity Bootcamp II, 2010 Nov-Dec This is pretty much on random code related things with no structure. Expect lots of topic jumps for no reason at all!
More informationSocial Media at Work Quiz
Social Media at Work Quiz 4669 Quiz- SOCIAL MEDIA AT WORK 1. Malware is a term that describes: a) Software that you purchase from third party vendors. b) Software that you buy directly from the manufacturer.
More informationDIGITAL PRODUCT DESIGN
DIGITAL PRODUCT DESIGN MAT THEW ALDRICH SIA Project Overview Purpose The purpose of this product challenge is to design a product feature for CarsDirect Mobile, an online automotive research portal and
More informationSystemDesk - EB tresos Studio - TargetLink Workflow Descriptions
SystemDesk - EB tresos Studio - TargetLink Workflow Descriptions Usable with Versions: dspace SystemDesk 4.1 EB tresos Studio 13 or 14 TargetLink 3.4 or TargetLink 3.5 (with patches) February, 2014 1 /
More information18-642: Race Conditions
18-642: Race Conditions 10/30/2017 Race Conditions Anti-Patterns for Race Conditions: Unprotected access to shared variables Shared variables not declared volatile Not accounting for interrupts and task
More informationJOBS Load Regulation. Ulf Wiger, Feuerlabs Inc Erlang User Conference, Stockholm 14 June Saturday, 15 June 13
JOBS Load Regulation Ulf Wiger, Feuerlabs Inc Erlang User Conference, Stockholm 14 June 2013 Major contributor to downtime In Telecoms, nearly half of registered downtime is due to overload (source: FCC)
More informationBy Jon Duckett Web Design with HTML, CSS, JavaScript and jquery Set (1st Edition) Click here if your download doesn"t start automatically
By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery Set (1st Edition) Click here if your download doesn"t start automatically By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery
More information