Brian Marick — «Everyday Scripting with Ruby

Total Page:16

File Type:pdf, Size:1020Kb

Brian Marick — «Everyday Scripting with Ruby What readers are saying about Everyday Scripting with Ruby What a wondrous collection of recipes, guidelines, warnings, compre- hensive examples, metaphors, exercises, and questions! It’s a terrific value to software testing practitioners who want to get the most from their test automation effort. Grigori Melnik Lecturer, University of Calgary A fantastic type-along-with-me introduction to a powerful scripting language that starts in the shallows and then moves into the depths turning the reader into an accomplished Ruby scripter, almost with- out them noticing it! Erik Petersen Emprove Finally a hands-on book that is filled with gems of wisdom for the test- ing community. By following the book’s easy-to-read chapters, real-life code samples, and superb coverage of complex topics like test-driven design and inheritance, a tester will not only take her testing career to the next level but also contribute immensely to the software develop- ment at her organization. Gunjan Doshi VP of Product Development and Process Excellence, Community Connect, Inc Marick explains the Ruby language using a series of short, practical examples. Watir users and other testers who want to learn Ruby will find it very accessible. Bret Pettichord Lead Developer, Watir When you’ve read this book, you will be able to automate software tests, which will give you an edge on most of your QA workmates. You will be able to program in Ruby, which is a joy in itself. You will have created several very useful utilities and will know how to adapt them to meet your particular needs. All of the above will have been achieved briskly and pleasantly. You will become a more effective tester and, most likely, will have a fine time in the process. George Hawthorne Consultant, Oblomov Consulting The book is an excellent read, is very informative, and covers a lot of ground in a relatively slim book. I think this is always a good idea. I have a lot of 800+ page tech books that I’ve read about the first half or two thirds of, because they are padded toward the end with very esoteric information. This book held my interest throughout—I have a full-time job and a ten-month-old son and still managed to get through these examples in around a week! Brian’s personality comes through (e.g., the Kennel containing Barkers) in a good way that helps rather than hinders in understanding the material. Paddy Healey Enterprise Systems Engineer, Aventail Corporation The chapters, examples, and exercises on regular expressions are worth the cost of the book alone! Everything else is more than just gravy—it’s every kind of dessert you didn’t know you could have. Whether you are just beginning to script or have been scripting for several years, this book will be an invaluable resource. The examples and exercises, Ruby facts, step-by-step approach, and explanations will help you kick up your automation efforts to a whole new level! Paul Carvalho Consultant, Software Testing and Quality Services Everyday Scripting with Ruby For Teams, Testers, and You Brian Marick The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas Many of the designations used by manufacturers and sellers to distinguish their prod- ucts are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://www.pragmaticprogrammer.com Copyright © 2006 Brian Marick. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmit- ted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Printed in the United States of America. ISBN-10: 0-9776166-1-4 ISBN-13: 978-0-9776166-1-9 Printed on acid-free paper with 85% recycled, 30% post-consumer content. First printing, December 2006 Version: 2007-1-25 To Dawn, my Best Beloved, best friend, and role model And to shoemakers’ children everywhere Contents 1 Introduction 13 1.1 How the Book Works ..................... 15 1.2 An Outline of the Book ................... 16 1.3 Service After the Sale .................... 17 1.4 Supplements ......................... 18 1.5 Acknowledgments ...................... 18 2 Getting Started 19 2.1 Download the Practice Files ................. 19 2.2 In the Beginning Was the Command Line ......... 20 2.3 Do You Need to Install Ruby? ................ 22 2.4 Installing Ruby ........................ 22 2.5 Your Two Basic Tools .................... 23 2.6 Prompts, Command Lines, Prompts, and irb . 24 2.7 It’s Time to Make Mistakes ................. 26 I The Basics 29 3 A First Script: Comparing File Inventories 30 3.1 A Script in Action ....................... 30 3.2 The Ruby Universe ...................... 31 3.3 Objects Send and Receive Messages ............ 31 3.4 Variables Name Objects ................... 33 3.5 Comparing Arrays ...................... 34 3.6 Printing to the Screen .................... 35 3.7 Making a Script ........................ 36 3.8 Where Do We Stand? .................... 38 3.9 Exercises ........................... 38 CONTENTS 9 4 Ruby Facts: Arrays 39 5 Three Improvements and a Bug Fix 43 5.1 Command-line Arguments ................. 43 5.2 Ignoring Case ......................... 45 5.3 Methods ............................ 49 5.4 Dissecting Strings ...................... 51 5.5 Fixing a Bug ......................... 53 5.6 Where Do We Stand? .................... 55 5.7 Prelude to the Exercises ................... 56 5.8 Exercises ........................... 58 6 Ruby Facts: If, Equality Testing, and Unless 61 6.1 if ...elsif ...else ....................... 61 6.2 When Are Objects Equal? .................. 63 6.3 A Shorthand Version of if .................. 63 6.4 unless ............................. 64 6.5 The Question Mark Operator ................ 64 II Growing a Script 66 7 The Churn Project: Writing Scripts without Fuss 67 7.1 The Project .......................... 67 7.2 Building a Solution ..................... 69 7.3 Where Do We Stand? .................... 91 7.4 Exercises ........................... 91 8 Ruby Facts: Booleans 94 8.1 Other Boolean Operators .................. 94 8.2 Precedence .......................... 94 8.3 Every Object Is a Truth Value ............... 96 8.4 Boolean Expressions Can Select Objects ......... 96 9 Our Friend, the Regular Expression 98 9.1 Regular Expressions Match Strings ............ 99 9.2 Dissecting Strings with Regular Expressions . 101 9.3 Reordering an Array ..................... 102 9.4 Where Do We Stand? .................... 104 9.5 Exercises ........................... 104 CONTENTS 10 10 Ruby Facts: Regular Expressions 106 10.1 Special Characters ...................... 106 10.2 Grouping and Alternatives ................. 108 10.3 Taking Strings Apart ..................... 108 10.4 Variables Behind the Scenes ................ 109 10.5 Regular Expression Options ................ 109 10.6 Wait, There’s More. .................... 110 10.7 Exercises ........................... 110 11 Classes Bundle Data and Methods 112 11.1 Classes Define Methods ................... 115 11.2 Objects Contain Data .................... 116 11.3 Where Do We Stand? .................... 120 11.4 Exercises ........................... 121 12 Ruby Facts: Classes (with a Side Order of Symbols) 126 12.1 Defining Accessors ...................... 126 12.2 Self ............................... 129 12.3 Class Methods ........................ 133 12.4 Class Variables and Globals ................ 136 12.5 Exercises ........................... 136 III Working in a World Full of People 138 13 Scraping Web Pages with Regular Expressions 139 13.1 Treating Web Pages Like Files ............... 140 13.2 Restricting Attention to Part of the Page ......... 142 13.3 Plucking Out the Title and Authors ............ 144 13.4 Hashes Store Named Data ................. 146 13.5 Taking the Trip ........................ 147 13.6 Exercise Yourself ....................... 149 14 Other Ways of Working with Web Applications 152 14.1 Handling XHTML ....................... 152 14.2 Driving the Browser ..................... 154 14.3 Direct Access to Underlying Protocols ........... 155 CONTENTS 11 15 Working with Comma-Separated Values 158 15.1 The CSV Library ....................... 159 15.2 Using Blocks for Automatic Cleanup ........... 159 15.3 More CSV Operations .................... 160 15.4 Applying It All to affinity-trip.rb .............. 160 15.5 Discovering and Understanding Classes in the Standard Library 161 15.6 Replacing Code with Data .................. 163 16 Ruby Facts: Hashes 166 17 Ruby Facts: Argument Lists 169 17.1 Optional Arguments ..................... 169 17.2 Rest Arguments ....................... 170 17.3 Keyword Arguments ..................... 171 18 Downloading Helper Scripts and Applications 174 18.1 Finding Packages ......................
Recommended publications
  • A Framework for Evaluating Performance of Software Testing Tools
    INTERNATIONAL JOURNAL OF SCIENTIFIC & TECHNOLOGY RESEARCH VOLUME 9, ISSUE 02, FEBRUARY 2020 ISSN 2277-8616 A Framework For Evaluating Performance Of Software Testing Tools Pramod Mathew Jacob, Prasanna Mani Abstract: Software plays a pivotal role in this technology era. Due to its increased applicable domains, quality of the software being developed is to be monitored and controlled. Software organization follows many testing methodologies to perform quality management. Testing methodologies can be either manual or automated. Automated testing tools got massive acceptability among software professionals due to its enhanced features and functionalities than that of manual testing. There are hundreds of test automation tools available, among which some perform exceptionally well. Due to the availability of large set of tools, it is a herculean task for the project manager to choose the appropriate automation tool, which is suitable for their project domain. In this paper, we derive a software testing tool selection model which evaluates the performance aspects of a script-based testing tool. Experimental evaluation proves that, it can be used to compare and evaluate various performance characteristics of commercially accepted test automation tools based on user experience as well as system performance. Index Terms: Automated testing, Software testing, Test script, Testing Tool, Test bed, Verification and Validation. —————————— ◆ —————————— 1 INTRODUCTION S OFTWARE is advanced in recent days by enhancing its applicable domains. Software is embedded in almost all electronic gadgets and systems. In this scenario the quality of the software plays a significant role. The customer or end – user should be satisfied which is primarily depended on quality and capability of the software being developed.
    [Show full text]
  • Bash Guide for Beginners
    Bash Guide for Beginners Machtelt Garrels Garrels BVBA <tille wants no spam _at_ garrels dot be> Version 1.11 Last updated 20081227 Edition Bash Guide for Beginners Table of Contents Introduction.........................................................................................................................................................1 1. Why this guide?...................................................................................................................................1 2. Who should read this book?.................................................................................................................1 3. New versions, translations and availability.........................................................................................2 4. Revision History..................................................................................................................................2 5. Contributions.......................................................................................................................................3 6. Feedback..............................................................................................................................................3 7. Copyright information.........................................................................................................................3 8. What do you need?...............................................................................................................................4 9. Conventions used in this
    [Show full text]
  • L#07: PHP Date & Time
    L#07: PHP Date & Time Using Date & Time in PHP Lecture 7 March 21, 2007 ©2007, I.Sarah Al-Shareef 1 Table of Content Overview Date and Time Functions Definitions Displaying Date and Time Getting Date as Timestamp Displaying Readable Date Building Formatting String Special Formatting Characters for date() Convert from Readable to Timestamp Getting Files Dates Displaying Dates in other languages Formatting Characters for strftime() March 21, 2007 ©2007, I.Sarah Al-Shareef 2 1 L#07: PHP Date & Time Overview Date & Time Functions Function Description checkdate() Validates set of Gregorian year, month, and day values (for example, 2005, 3, 17). date_sunrise() Returns time of sunrise for a given day and location (new in PHP 5). date_sunset() Returns time of sunset for a given day and location (new in PHP 5). date() Formats a local date/time, given a Unix timestamp (for example, 1111035030000 from the introduction to this chapter) and a formatting string. getdate() Given a Unix timestamp, returns an associative array containing date and time information (defaults to current time). gettimeofday() Returns an associative array containing information about the current system time. In PHP 5.1, it is possible for this function to return a float as well. March 21, 2007 ©2007, I.Sarah Al-Shareef 3 Overview Date & Time Fun cont. Function Description gmdate() Formats a GMT/UTC date/time. Uses the same formatting characters as the date() function. gmmktime() Converts a set of GMT date/time values into a Unix timestamp (analogous to mktime()). gmstrftime() Formats a GMT/UTC date/time according to locale settings (similar to strftime() except the time used is GMT/UTC).
    [Show full text]
  • Automated Testing of Firmware Installation and Update Scenarios for Peripheral Devices
    DEGREE PROJECT IN COMPUTER SCIENCE AND ENGINEERING, SECOND CYCLE, 30 CREDITS STOCKHOLM, SWEDEN 2019 Automated testing of firmware installation and update scenarios for peripheral devices DAG REUTERSKIÖLD KTH ROYAL INSTITUTE OF TECHNOLOGY SCHOOL OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE Automated testing of firmware installation and update scenarios for peripheral devices DAG REUTERSKIÖLD Master in Computer Science Date: August 12, 2019 Supervisor: Hamid Faragardi Examiner: Elena Troubitsyna School of Electrical Engineering and Computer Science Host company: Tobii AB Swedish title: Automatisering av enhetsinstallation, uppdatering och testning med hjälp av virtuella maskiner iii Abstract This research presents an approach to transition from manual to automated testing of hardware specific firmware. The manual approach for firmware test- ing can be repetitive and time consuming. A significant proportion of the time is spent on cleaning and re-installing operating systems so that old firmware does not interfere with the newer firmware that is being tested. The approach in this research utilizes virtual machines and presents an automation framework. One component of the automation framework is an application to imitate con- nected peripheral devices to bypass hardware dependencies of firmware in- stallers. The framework also consists of automation and pipeline scripts with the objective to execute firmware installers and detect errors and abnormalities in the installation and updating processes. The framework can run on locally hosted virtual machines, but is most applicable using cloud hosted virtual ma- chines, where it is part of a continuous integration that builds, downloads, installs, updates and tests new firmware versions, in a completely automated manner. The framework is evaluated by measuring and comparing execution times with manually conducted installation and updating tests, and the result shows that the framework complete tests much faster than the manual approach.
    [Show full text]
  • A Novel High Speed Leading Zero Counter for Floating Point Units
    Satish Paidi, Rohit Sreerama, K.Neelima / International Journal of Engineering Research and Applications (IJERA) ISSN: 2248-9622 www.ijera.com Vol. 2, Issue 2,Mar-Apr 2012, pp.1103-1105 A Novel High Speed Leading Zero Counter For Floating Point Units Satish Paidi*, Rohit Sreerama*, K.Neelima** *(M.Tech VLSI, Sree Vidyanikethan Engineering College, Tirupathi,) ** (Assistant Professor, Sree Vidyanikethan Engineering College, Tirupathi,) ABSTRACT: - This paper mainly focuses on leading derived Boolean relations that describes the proposed zero counting. In this paper a novel leading zero counter leading zero counter. In section 4 the implementation is proposed. New Boolean expressions are derived for results and the comparison with the existing method are the new leading zero counter. We can explore various discussed and section 5 concludes the paper follows by designs of leading zero counting unit by using the the references. proposed approach. When compared with the known architectures the new circuits can be implemented II. FUNCTIONALITY OF EXISTING effectively in both static and dynamic logic and also LEADING ZERO COUNTING METHOD requires less energy per operation. The proposed leading This section discusses the method which is used in zero counter can also be integrated with a leading zero leading zero counting, their implementation and anticipation logic for better and fast results. Finally, a functionality. A leading zero is any zero bit that leads a simple and effective Leading Zero Counter was proposed number string in positional notation. In binary and the occupancy rate and the delay characteristics are representation consider the number of consecutive zeros investigated. that appear in a word before the first more significant bit Keywords - Floating Point Unit, Normalization, Leading that equal to one.
    [Show full text]
  • Leading One Prediction - Implementation, Generalization, and Application
    LEADING ONE PREDICTION - IMPLEMENTATION, GENERALIZATION, AND APPLICATION Nhon Quach Michael J. Flynn Technical Report: CSL-TR-91-463 March 1991 This work was supported by NSF contract No. MlP88-22961. Leading One Prediction - Implementation, Generalization, and Application bY Nhon Quach and Michael Flynn Technical Report: CSL-TR-91-463 Masch 1991 Computer Systems Laboratory Departments of Electrical Engineering and Computer Science St anford University St anford, California 94305 Abstract This paper presents the concept of leading-one prediction (LOP) used in most high-speed floating-point adders in greater detail and describes two existing implementations. The first one is similar to that used in the TBM RS /GO00 processor. The second is a distributed version of the first, con- suming less hardware when multiple patterns need to be detected. We show how to modify these circuits for sign-magnitude numbers as dictated by the IEEE standard. We then point out that (1) LOP and carry lookahead in parallel addition belong to the same class of problem, that of bit pattern detection. Such a recognition allows techniques developed for parallel addition to be borrowed for bit pattern detection. And (2) LOP can be applied to compute the sticky bit needed for binary multipliers to perform IEEE rounding. Key Words and Phrases: Lea,ding one prediction, high-speed floating- point adders, parallel addition, IEEE rounding, sticky bit computation, par- allel implementation. Copyright @ 1991 bY Nhon Quach and Michael Flynn Contents 1 Introduction 1 2 Leading One Prediction 2 2.1 Theory. ...................................... 2 2.2 Implementations ................................. 3 2.3 Modification for Sign-Magnitude Numbers ..................
    [Show full text]
  • The C Programming Language
    The C programming Language The C programming Language By Brian W. Kernighan and Dennis M. Ritchie. Published by Prentice-Hall in 1988 ISBN 0-13-110362-8 (paperback) ISBN 0-13-110370-9 Contents ● Preface ● Preface to the first edition ● Introduction 1. Chapter 1: A Tutorial Introduction 1. Getting Started 2. Variables and Arithmetic Expressions 3. The for statement 4. Symbolic Constants 5. Character Input and Output 1. File Copying 2. Character Counting 3. Line Counting 4. Word Counting 6. Arrays 7. Functions 8. Arguments - Call by Value 9. Character Arrays 10. External Variables and Scope 2. Chapter 2: Types, Operators and Expressions 1. Variable Names 2. Data Types and Sizes 3. Constants 4. Declarations http://freebooks.by.ru/view/CProgrammingLanguage/kandr.html (1 of 5) [5/15/2002 10:12:59 PM] The C programming Language 5. Arithmetic Operators 6. Relational and Logical Operators 7. Type Conversions 8. Increment and Decrement Operators 9. Bitwise Operators 10. Assignment Operators and Expressions 11. Conditional Expressions 12. Precedence and Order of Evaluation 3. Chapter 3: Control Flow 1. Statements and Blocks 2. If-Else 3. Else-If 4. Switch 5. Loops - While and For 6. Loops - Do-While 7. Break and Continue 8. Goto and labels 4. Chapter 4: Functions and Program Structure 1. Basics of Functions 2. Functions Returning Non-integers 3. External Variables 4. Scope Rules 5. Header Files 6. Static Variables 7. Register Variables 8. Block Structure 9. Initialization 10. Recursion 11. The C Preprocessor 1. File Inclusion 2. Macro Substitution 3. Conditional Inclusion 5. Chapter 5: Pointers and Arrays 1.
    [Show full text]
  • GUI-Guided Test Script Repair for Mobile Apps
    This is the author's version of an article that has been published in this journal. Changes were made to this version by the publisher prior to publication. The final version of record is available at http://dx.doi.org/10.1109/TSE.2020.3007664 1 GUI-Guided Test Script Repair for Mobile Apps Minxue Pan, Tongtong Xu, Yu Pei, Zhong Li, Tian Zhang, Xuandong Li Abstract—Graphical User Interface (GUI) testing is widely used to test mobile apps. As mobile apps are frequently updated and need repeated testing, to reduce the test cost, their test cases are often coded as scripts to enable automated execution using test harnesses/tools. When those mobile apps evolve, many of the test scripts, however, may become broken due to changes made to the app GUIs. While it is desirable that the broken scripts get repaired, doing it manually can be preventively expensive if the number of tests need repairing is large. We propose in this paper a novel approach named METER to repairing broken GUI test scripts automatically when mobile apps evolve. METER leverages computer vision techniques to infer GUI changes between two versions of a mobile app and uses the inferred changes to guide the repair of GUI test scripts. Since METER only relies on screenshots to repair GUI tests, it is applicable to apps targeting open or closed source mobile platforms. In experiments conducted on 22 Android apps and 6 iOS apps, repairs produced by METER helped preserve 63.7% and 38.8% of all the test actions broken by the GUI changes, respectively.
    [Show full text]
  • Decimal Fractions
    Decimal Fractions Decimal Fractions Curriculum Ready www.mathletics.com Decimalfractionsallowustobemoreaccuratewithourcalculationsandmeasurements. Becausemostofushavetenfingers,itisthoughtthatthisisthereasonthedecimalfractionsystem isbasedaroundthenumber10! Sowecanthinkofdecimalfractionsasbeingfractionswithpowersof10 inthedenominator. WriteinthisspaceEVERYTHINGyoualreadyknowaboutdecimalfractions. s a go! Give thi Q Tomakedark-greencolouredpaint,youcanmixyellowandbluetogether,usingexactly0.5(half)asmuch yellowasyoudoblue. Howmuchdark-greenpaintwillyoumakeifyouuseallofthe12.5 mLofbluepaintyouhave? Work through the book for a great way to do this Decimal Fractions H 6 1 Mathletics Passport © 3P Learning SERIES TOPIC How does it work? Decimal Fractions Place value of decimal fractions Decimalfractionsrepresentpartsofawholenumberorobject. thousandths thousands of • thousandths Millionths Tens ThousandsHundredsTens Ones TenthsHundredthsThousandthsTen HundredMillionthsTen W H O L E D E C I M A L 1 10 10 # 000 000 000 000 000 100 100 # ' 1000 1000 # ' # Decimalpoint 10 10 ' 000 000 # 100 ' 1 ' 10 ' ' st 1 1 decimalplace:'10 ==# onetenth 10 nd 1 2 decimalplace:'10 ==# onehundredth 100 Add‘th’tothe namefordecimal rd 1 3 decimalplace:'10 ==# onethousandth placevalues 1000 th 1 4 decimalplace:'10 ==# onetenthousandth etc... 10 000 Writetheplacevalueofeachdigitinthenumber465.2703 4 6 5 . 2 7 0 3 Multiplybymultiplesof 10 Dividebymultiplesof 10 Expanded forms Place values 4......41# 00 = 400 = 4hundred 6......61# 0 = 60 = 6tens(orsixty) Integerparts
    [Show full text]
  • Programming in C
    Programming in C Programming in C This is a set of notes on Programming in C. They were originally prepared as plain ASCII files using a private set of nroff macros and have now been converted to HTML. Most of the small programming examples are available on-line. Just select the link about the program and then use your WWW browser's ability to save pages in a local file. 1. Chapter 1 Introduction 2. Chapter 2 Programming with Integers 3. Chapter 3 Arithmetic 4. Chapter 4 Data Types 5. Chapter 5 Loops and Conditions 6. Chapter 6 Addresses, Arrays, Pointers and Strings 7. Chapter 7 Functions and Storage Management 8. Chapter 8 The Pre-Processor and Standard Libraries 9. Chapter 9 Command Line Arguments and File Handling 10. Chapter 10 Structures, Unions and Typedefs 11. Chapter 11 Separate Compilation of C Modules 12. Chapter 12 Efficiency, Economy and Portability There are various other sources of information available on-line. If you are really interested in the C programming language you should 1. Read the comp.lang.c newsgroup 2. Obtain and read the comp.lang.c FAQ 3. Study the submissions to the International Obfuscated C Code Contest If you are interested in systems programming especially in the Unix context there are further notes on a wide range of topics. Peter Burden [email protected] http://www.scit.wlv.ac.uk/~jphb/cbook/html/ [02/04/2002 09:18:37] Introduction to C Programming - Introduction Introduction to C Programming - Introduction Chapter chap1 section 1 By time-honoured convention the first C program anybody writes is known as the "hello world" program.
    [Show full text]
  • Bits and Bit Sequences Integers
    Data ● (Some repeating CS1083, ECE course) ● bits and bit sequences ● integers (signed and unsigned) ● bit vectors ● strings and characters ● floating point numbers ● hexadecimal and octal notations Bits and Bit Sequences ● Fundamentally, we have the binary digit, 0 or 1. ● More interesting forms of data can be encoded into a bit sequence. ● 00100 = “drop the secret package by the park entrance” 00111 = “Keel Meester Bond” ● A given bit sequence has no meaning unless you know how it has been encoded. ● Common things to encode: integers, doubles, chars. And machine instructions. Encoding things in bit sequences (From textbook) ● Floats ● Machine Instructions How Many Bit Patterns? ● With k bits, you can have 2k different patterns ● 00..00, 00..01, 00..10, … , 11..10, 11..11 ● Remember this! It explains much... ● E.g., if you represent numbers with 8 bits, you can represent only 256 different numbers. Names for Groups of Bits ● nibble or nybble: 4 bits ● octet: 8 bits, always. Seems pedantic. ● byte: 8 bits except with some legacy systems. In this course, byte == octet. ● after that, it gets fuzzy (platform dependent). For 32-bit ARM, – halfword: 16 bits – word: 32 bits Unsigned Binary (review) ● We can encode non-negative integers in unsigned binary. (base 2) ● 10110 = 1*24 + 0*23 + 1*22 + 1*21 +1*20 represents the mathematical concept of “twenty-two”. In decimal, this same concept is written as 22 = 2*101 + 2*100. ● Converting binary to decimal is just a matter of adding up powers of 2, and writing the result in decimal. ● Going from decimal to binary is trickier.
    [Show full text]
  • Safe Prescribing
    Special issue PRESCRIBING THE ROLE OF SAFE PRESCRIBING IN THE PREVENTION OF MEDICATION ERRORS edications are the most common cause order is written, flag the patient’s chart and place it in the of adverse events in hospitalized rack by the clerical associate to ensure that the nurse and M patients.1,2 Adverse drug events (ADEs) the pharmacist are aware of the order. This process is occur during 6.5% of hospital admissions and 1% essential because the omission of medication of patients suffer disabling injuries as a result of an administration, usually first time doses, is the most ADE.1,2,3 Common causes of medication errors are frequently reported medication error type at Shands listed in Table 1.4 Because adverse Jacksonville. reactions to medications can be Obviously, no one group of serious or fatal, it is extremely " Preventing medication healthcare professionals is responsible for important that drug allergies and errors must be a multi- all errors. Therefore, preventing the reactions are documented. medication errors must be a multi- Additionally, medications can be disciplinary effort." disciplinary effort. For any further easily confused as a result of look- questions, please contact your liaison alike or sound-alike names and pharmacist or the Drug Information abbreviations (e.g., Toradol and tramadol, O.D. Service at 244-4185. can be interpreted as once daily or right eye, and (Continued on page 2) AZT could represent azathioprine or zidovudine). It is important that everyone utilize strategies to Table 1. Common Causes of Medication Errors decrease medication errors. Several tips for safe prescribing of medications are reviewed in Table 2 and should be incorporated into daily practice.4 • Ambiguous strength designation When writing orders for patients in the • Look-alike or sound-alike names or use of hospital, the same tips are useful.
    [Show full text]