CINXE.COM

Terms of Service - O'Reilly Media

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Terms of Service - O'Reilly Media</title> <meta name="description" content=" " /> <meta name="date" content="2024-11-23" /> <meta name="search_date" content="2019-01-09" /> <meta name="search-title" content="Terms of Service - O'Reilly Media" /> <meta name="pagename" content="Terms of Service - O'Reilly Media" /> <meta name="site" content="O'Reilly" /> <meta name="twitter:title" content="Terms of Service - O'Reilly Media" /> <meta name="twitter:description" content=" " /> <meta name="twitter:site" content="@OReillyMedia" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Terms of Service - O'Reilly Media" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:image" content="https://cdn.oreillystatic.com/oreilly/images/oreilly-social-200.png" /> <meta property="og:image" content="https://cdn.oreillystatic.com/oreilly/images/oreilly-social-200.png" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="language_name" content="English"> <meta name="native_language_name" content="English"> <meta name="format-detection" content="telephone=no"> <link rel="icon" type="image/png" href="//www.oreilly.com/favicon.ico"> <!--[if lte IE 9]> <script> 'article aside footer header main nav section time'.replace(/\w+/g,function(n){document.createElement(n)}) </script> <![endif]--> <link rel="stylesheet" type="text/css" href="https://cdn.oreillystatic.com/assets/css/2018_font_face.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.oreillystatic.com/assets/css/odot-layout-20240226.css" /> <!--[if IE 9]> <style type="text/css"> #menu-toggle:checked ~ .mobile-nav { display:block; } .mobile-nav { display: none; } </style> <![endif]--> <!-- Initiate dataLayer for GA --> <script> loggedInObject = new Object(); var dataLayer = window.dataLayer || []; //Check for O'Reilly Unified logged-in status if (document.cookie.split(';').filter(function(item) { return item.indexOf('orm-jwt=') >= 0 }).length) { loggedInObject.unifiedLoggedIn = 'yes'; loggedInObject.loggedIn = 'yes'; dataLayer.push(loggedInObject); //Add 'loggedIn class to html tag const htmlTag = document.querySelector('html'); if (htmlTag !== null) { htmlTag.classList.add('loggedIn'); } } </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5P4V6Z');</script> <!-- End Google Tag Manager --> <!-- Start VWO Async SmartCode --> <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" /> <script type='text/javascript' id='vwoCode'> window._vwo_code || (function() { var account_id=27087, version=2.1, settings_tolerance=2000, hide_element='body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', /* DO NOT EDIT BELOW THIS LINE */ f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var i=this.getSettings(),n=d.createElement('script'),r=this;t=t||{};if(i){n.textContent=i;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var i=this.hide_element(),n=i?i+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=n;else t.appendChild(d.createTextNode(n));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var n=d.createElement('div');n.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';n.setAttribute('id','_vis_opt_path_hides');n.classList.add('_vis_hide_layer');t.parentNode.insertBefore(n,t.nextSibling)}var o='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:o})}else{this.load(o+'&x=true')}}};w._vwo_code=code;code.init();})(); </script> <!-- End VWO Async SmartCode --> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P4V6Z" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="skipToMain" id="skipToMain"><a href="#maincontent"><span class="skipToMain-text">Skip to main content</span></a></div> <header role="banner"> <div class="content"> <nav role="navigation" aria-label="site sections"> <a href="https://www.oreilly.com" class="logo" title="home page"><img src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"></a> <button id="mobileNavButton" class="mobileNavButton mobileNavButton--collapse mobileNavButton--3dx" type="button" aria-expanded="false" aria-controls="menuList"> <span class="mobileNavButton-box"> <span class="mobileNavButton-inner"></span> </span> </button> <ul id="menuList" class="menuList mobileHidden "> <li class="menuList-itemsP1"> <ul> <li class="menuList-item menuList-signIn"><a id="nav-signIn" href="https://www.oreilly.com/member/login/">Sign In</a></li> <li class="menuList-item menuList-tryNow"><a id="nav-tryNow" class="menuList-cta" href="https://www.oreilly.com/online-learning/try-now.html">Try Now</a></li> <li class="menuList-item menuList-platform"><a id="nav-platform" class="menuList-cta" href="https://www.oreilly.com/member/login/">O&rsquo;Reilly Platform</a></li> </ul> </li> <li class="menuList-itemsP2"> <ul> <li class="menuList-item menuList-itemWithSub"><a href="https://www.oreilly.com/online-learning/teams.html">Teams</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/teams.html">For business</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/government.html">For government</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/academic.html">For higher ed</a></li> </ul> </li> <li class="menuList-item"><a href="https://www.oreilly.com/online-learning/individuals.html">Individuals</a></li> <li class="menuList-item menuList-itemWithSub"><a href="https://www.oreilly.com/online-learning/features.html">Features</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/features.html">All features</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/courses.html">Courses</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-certification.html">Certifications</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/intro-interactive-learning.html">Interactive learning</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/live-events.html">Live events</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-answers.html">Answers</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/insights-dashboard.html">Insights reporting</a></li> </ul> </li> <li class="menuList-item"><a href="https://www.oreilly.com/radar/">Blog</a></li> <li class="menuList-item" id="nav-forMarketers"><a href="https://www.oreilly.com/content-marketing-solutions.html">Content sponsorship</a></li> <li class="menuList-item menuList-item-search" id="nav-search"> <form id="js-searchForm" class="searchForm" action="https://www.oreilly.com/search/"><input id="search" type="search" name="query" placeholder="Explore our content" autocomplete="off" required=""><button id="js-searchCloseButton" class="navSearchCloseButton">Close</button></form> <button id="js-searchButton" class="navSearchButton">Search</button> </li> </ul> </li> </ul> </nav> </div> </header> <main role="main" id="maincontent"> <section class="hero hero-general"> <div class="content"> <div class="hero-textWrap"> <h1>Terms of service</h1> </div> </div> </section> <section class="textSection legal terms-of-service" id="terms"> <div class="content"> <p class="version">Last updated: December 19, 2019</h2> <nav> <ul class="toc"> <li><a href="#acceptance">Acceptance</a></li> <li><a href="#conduct">Your Conduct</a></li> <li><a href="#submissions">Your Submissions</a></li> <li><a href="#licenses">Content Licenses and Ownership</a></li> <li><a href="#copyright">Copyright Infringement Claims</a></li> <li><a href="#registration">Registration Data</a></li> <li><a href="#privacy">Privacy Policy</a></li> <li><a href="#advertisements">Advertisements, Third Party Posts and Links</a></li> <li><a href="#trademark">Trademark Information</a></li> <li><a href="#indemnity">Indemnity</a></li> <li><a href="#modification">Modification and Termination of Services</a></li> <li><a href="#disclaimer">Assumptions of Risk, Safety, and Warranty Disclaimer</a></li> <li><a href="#liability">Liability Limitation</a></li> <li><a href="#provisions">General Provisions</a></li> </ul> </nav> <section id="acceptance"> <h2>Acceptance</h2> <p>O'Reilly Media Inc. ("O'Reilly," "we," or "us") makes this site and the related site materials available for your access and use subject to your compliance with these Terms of Service ("TOS"). Your obligations under this TOS include the obligation to abide by our <a href="https://www.oreilly.com/terms/guidelines.html">Community Guidelines</a> and other terms and conditions ("supplemental terms") that apply to specific O'Reilly projects, products, and services. Your use of any O&rsquo;Reilly online learning services in preview mode, on a free trial basis, or pursuant to your purchase of a membership or other service offering, is also subject to our <a href="https://learning.oreilly.com/membership-agreement/">Membership Agreement</a>.</p> <p>"Site materials" means the content, tools, products, services, projects, and activities made available or enabled via this site.</p> <p>This website and the products and services offered by O'Reilly (with the exception of our "Safari for Schools" service, which is subject to separate terms available here) are not intended for children. By accessing or using this site, you agree to comply with this TOS, and you certify that you are at least 18 years old, or if you are under 18 years old, your parent or legal guardian has reviewed the terms and accepted them on your behalf. Do not use or access the site if you do not agree to this TOS.</p> </section> <section id="conduct"> <h2>Your Conduct</h2> <p>You agree that you will not use the site or any site materials, project, or service to:</p> <p> (a) transmit spam, bulk, or unsolicited communications;<br /> (b) forge headers or otherwise manipulate identifiers (including URLs) in order to disguise the origin of any transmitted content;<br /> (c) misrepresent your identity, or affiliation with any person or entity;<br /> (d) disrupt the normal flow of dialogue or otherwise act in a manner that negatively affects other users' ability to participate in the site or any site projects or services;<br /> (e) engage in activities that would violate any fiduciary relationship, any applicable local, state, national or international law; or<br /> (f) collect or store personal data about other users unless specifically authorized to do so by such users. </p> </section> <section id="submissions"> <h2>Your Submissions</h2> <p>All of your contributions and submissions to the site and any site projects or services must comply with the applicable policies and guidelines.</p> <p>You represent and warrant with respect to each of your submissions that it:</p> <p> (i) does not include unauthorized disclosure(s) of personal information or trade secrets, and does not include any confidential information;</br> (ii) does not violate anyone's rights, including without limitation intellectual property rights;<br /> (iii) does not contain software viruses or any other elements designed to interrupt, destroy or limit the functionality of any software, systems, or devices;<br /> (iv) does not contain or link to commercial solicitations;<br /> (v) is not subject to laws or regulations regarding the export and other dissemination of information or technology; and<br /> (vi) is not inaccurate, defamatory, obscene, harassing, or otherwise objectionable in a manner which would support third party legal claims. As between you and O'Reilly, you assume all risk and consequences resulting from any third party's use of any submission that you make. You grant to us and our respective licensees and assigns, the perpetual, irrevocable, nonexclusive, and worldwide right, but not the obligation, to make use the name under which you submit content in connection with any subsequent use of the content. </p> <p>Some projects and activities on our site require that submissions made by you be made in accordance with the <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution Share Alike License v.3.0</a> and/or any subsequent version, or another specified license. You agree that we shall be entitled to make use of the submission in accordance with the applicable license, without any obligation to you for such use other than the obligations imposed by that license.</p> <p>Some opportunities for submitting content do not specify an applicable license. In the case of those submissions, you grant to us and our respective licensees and assigns, the perpetual, irrevocable, nonexclusive, royalty-free, transferable, and worldwide right to make any use of the submission that we deem suitable in our sole discretion (for example: reproduce, edit, display, modify, sublicense, use as the basis for derivative works, publish, or distribute in any format or media), without any obligation to you for such use.</p> <p>We agree that you retain ownership of the copyrights in your submissions, regardless of which license applies to our use, provided that if your submission contains third party or public domain content, we and you shall have the same rights as any member of the public with respect to the third party or public domain content.</p> <p>If you submit ideas, suggestions, or proposals to us through our suggestion, user comment, or feedback pages, you acknowledge and agree that:</p> <p> (a) your submission does not contain confidential or proprietary information and we are not obligated to keep it confidential;<br /> (b) we are entitled to use or disclose the submission for any purpose and in any way;<br /> (c) we already may be considering or developing something similar to your submission; and<br /> (d) if we make use of all or part of your submission, you will not be entitled to any payment or other consideration. </p> </section> <section id="licenses"> <h2>Content Licenses and Ownership</h2> <p>You are welcome to make use of the site materials that are made available under open source or public licenses (such as content subject to Creative Commons licenses), on the condition that you comply with the requirements of the licenses. Information about the open source or public licenses that apply to specific site materials can be found either posted with or linked to those materials.</p> <p>Your use of the site does not transfer to you any ownership or other rights in the site or its content. The site and the site materials are the property of O'Reilly and/or its content providers, and are protected by the laws of the United States and other countries, including their copyright and trademark laws. Except for materials available over the site under open source or public licenses, and except for uses that constitute "fair use" under <a href="https://www.copyright.gov/title17/92chap1.html#107">U.S. copyright law (17 USC Sec. 107)</a>, the site may not be copied, reproduced, republished, uploaded, transmitted, modified, indexed, cataloged, mirrored or distributed in any way, in whole or in part, without the express prior written consent of O'Reilly.</p> </section> <section id="copyright"> <h2>Copyright Infringement Claims</h2> <p>O'Reilly respects the intellectual property rights of others, and we ask our users to do the same. If you believe that your copyrighted work has been copied and is accessible on an O'Reilly site in a way that constitutes copyright infringement, please send a written notice to our Copyright Agent that includes:</p> <ul> <li>The electronic or physical signature of the owner of the copyright or the person authorized to act on the owner's behalf;</li> <li>A description of the copyrighted work that you claim has been infringed;</li> <li>A description of where the material that you claim is infringing is located, such as the URL where it is posted;</li> <li>Your name, address, telephone number and email address;</li> <li>A statement by you that you have a good faith belief that the disputed use of the material is not authorized by the copyright owner, its agent, or the law; and</li> <li>A statement by you, made under penalty of perjury, that the above information in your notice is accurate and that you are the copyright owner or are authorized to act on the copyright owner's behalf.</li> </ul> <p>O'Reilly's Copyright Agent for notice of claims of copyright infringement can be reached at:</p> <p> <strong>By mail</strong>:<br /> O&rsquo;Reilly Media, Inc.<br /> 1005 Gravenstein Highway North<br /> Sebastopol, CA 95472<br /> Attn: Legal Services Dept. </p> <p><strong>By email</strong>: <script type="text/javascript"> <!-- var name = "legal"; var domain = "oreilly.com"; var display = ""; var subject = ""; var ending = ""; var style = ""; document.write('<a target="_blank" class="' + style + '" href="mailto:' + name + '&#64;' + domain + '?subject=' + subject + '">'); if (display) { document.write(display); } else { document.write(name + '&#64;' + domain); } document.write('</a>' + ending); // --> </script> </p> <p>Please note: In order to be effective, your notice must be in writing. This contact information is provided in accordance with the Digital Millennium Copyright Act and solely for reporting copyright infringement claims.</p> </section> <section id="registration"> <h2>Registration Data</h2> <p>You agree to provide true, accurate, current and complete information about yourself as prompted by the site's registration form (the "Registration Data"). If we have reason to believe that you have failed to do so, we may suspend or terminate your account, and refuse or terminate any current or future use of the site or any O'Reilly service.</p> </section> <section id="privacy"> <h2>Privacy Policy</h2> <p>The Registration Data and other information that you provide to us or that we collect about you will be used and processed by us in accordance with our Privacy Policy, which is available at <a href="https://www.oreilly.com/privacy.html">https://www.oreilly.com/privacy.html</a>. By continuing to use the site, you acknowledge that you have read our Privacy Policy and that you understand and agree that your personal information will be used and processed by us in accordance with our Privacy Policy.</p> </section> <section id="advertisements"> <h2>Advertisements, Third Party Posts and Links</h2> <p>The messages and other posts by third parties that appear on the site express the views of their authors, who are wholly responsible for that content. They do not represent our opinions.</p> <p>We may display advertisements and promotions from third parties on the site. Also, the site contains links to third party sites or resources. Your contacts and interactions with these third parties and your participation in these promotions are solely between you and the third party, and we are not responsible or liable for any loss or damage to you that may the result.</p> <p>We don't endorse these third party sites or resources, and are not responsible for their availability.</p> </section> <section id="trademark"> <h2>Trademark Information</h2> <p>The O'Reilly Logo, and other designations, marks and logos associated with O'Reilly products and services ("O'Reilly Marks") appearing on the site are trademarks, trade names and service marks owned by O'Reilly. Guidelines on the site may permit you to make certain specific uses of the O'Reilly Marks. You agree not to use any O'Reilly Marks without the prior written consent of O'Reilly, except as expressly permitted by the guidelines on our site.</p> <p>You agree not to incorporate any O'Reilly Marks into your trademarks, service marks, company names, Internet addresses, domain names, or any other similar designations. You may not remove or alter any O'Reilly Marks, or co-brand your own services or material with any of the O'Reilly Marks.</p> </section> <section id="indemnity"> <h2>Indemnity</h2> <p>You agree to indemnify and hold O'Reilly and its officers, directors, affiliates, subsidiaries, partners, agents, licensors, licensees, suppliers, employees and representatives harmless from any claim or demand, including reasonable attorneys' fees, made by any third party due to or arising out of your violation of this TOS, or your violation of any rights of any third party based on or related to your use of the site.</p> </section> <section id="modification"> <h2>Modification and Termination of Services</h2> <p>We reserve the right in our sole discretion to remove site materials, modify, suspend or terminate the site (or any portion of it), and/or your use of or access, with or without notice. We will not be liable to you or any third-party for any modification, suspension, or termination of the site.</p> </section> <section id="disclaimer"> <h2>Assumptions of Risk, Safety, and Warranty Disclaimer</h2> <p>You agree to assume all risk in downloading and using any site materials, and with respect to any project that you undertake based on any site materials. You must take precautions (e.g., virus scans, etc.) to ensure that any content you download is free of viruses, worms or other potentially destructive elements. O'Reilly provides no assurances that the site material is or will be free of viruses, problems, or errors, nor assurances that any such issues will be resolved.</p> <p>Your safety when you undertake projects based on site material is your own responsibility, and your responsibilities include without limitation proper use of equipment and safety gear, and determining whether you have adequate skill and experience to perform the project. Power tools, electricity, and other resources used for these projects are dangerous, unless used properly and with adequate precautions, including safety gear. Some illustrations in the site materials do not depict safety precautions or equipment, in order to show the project steps more clearly. Projects described and depicted in the site materials are not intended for use by children.</p> <p>YOUR USE OF THE SITE AND/OR ANY SITE MATERIALS IS AT YOUR SOLE RISK. THE SITE, INCLUDING WITHOUT LIMITATION ALL SITE MATERIALS, INFORMATION, AND SERVICES, IS PROVIDED ON AN "AS IS," "AS AVAILABLE," AND "WITH ALL FAULTS" BASIS. O'REILLY DISCLAIMS ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS, AND WARRANTIES OF ANY KIND, INCLUDING ANY IMPLIED WARRANTY OR CONDITION OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. O'REILLY MAKES NO REPRESENTATIONS, WARRANTIES, CONDITIONS OR GUARANTEES AS TO THE USEFULNESS QUALITY, SUITABILITY, TRUTH, ACCURACY OR COMPLETENESS OF THE SITE OR THE SITE MATERIALS.</p> <p>O'REILLY MAKES NO WARRANTY OR REPRESENTATION THAT: (A) THE SITE WILL BE UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE; (B) THE RESULTS THAT MAY BE OBTAINED FROM THE USE OF THE SITE WILL BE ACCURATE OR RELIABLE; (C) THE QUALITY OF ANY SITE MATERIALS, CONTENT, INFORMATION, OR OTHER MATERIAL OBTAINED FROM THE SITE WILL MEET YOUR EXPECTATIONS OR REQUIREMENTS; OR (D) ANY ERRORS IN THE SITE WILL BE CORRECTED. NO ADVICE OR INFORMATION, WHETHER WRITTEN OR ORAL OBTAINED BY YOU FROM O'REILLY, WHETHER OBTAINED THROUGH THE SITE OR OTHERWISE, SHALL CREATE ANY WARRANTY NOT EXPRESSLY PROVIDED IN THIS TOS.</p> <p>YOU ASSUME ALL RISK FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR LOSS OF DATA THAT RESULTS FROM USE OF, OR OBTAINING ANY CONTENT FROM, THE SITE, INCLUDING WITHOUT LIMITATION ANY DAMAGES RESULTING FROM VIRUSES.</p> </section> <section id="liability"> <h2>Liability Limitation</h2> <p>TO THE FULL EXTENT PERMITTED BY LAW, O'REILLY IS NOT AND SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR EXEMPLARY DAMAGES (INCLUDING, WITHOUT LIMITATION, LOSS OF BUSINESS, REVENUE, PROFITS, GOODWILL, USE, DATA OR ECONOMIC ADVANTAGE ARISING OUT OF OR IN CONNECTION WITH THE SITE OR ANY SITE MATERIALS, EVEN IF O'REILLY HAS PREVIOUSLY BEEN ADVISED OF, OR REASONABLY COULD HAVE FORESEEN, THE POSSIBILITY OF SUCH DAMAGES, HOWEVER THEY ARISE, WHETHER IN BREACH OF CONTRACT OR IN TORT (INCLUDING NEGLIGENCE), INCLUDING WITHOUT LIMITATION DAMAGES DUE TO: (A) THE USE OF OR THE INABILITY TO USE THE SITE; (B) THE COST OF PROCUREMENT OF SUBSTITUTE SERVICES RESULTING FROM ANY DATA, INFORMATION OR SERVICES OBTAINED, OR MESSAGES RECEIVED OR TRANSACTIONS ENTERED INTO, THROUGH OR FROM THE SITE; (C) STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SITE, INCLUDING WITHOUT LIMITATION UNAUTHORIZED ACCESS TO OR ALTERATION OF TRANSMISSIONS OR DATA, MALICIOUS OR CRIMINAL BEHAVIOR, OR FALSE OR FRAUDULENT TRANSACTIONS; OR (D) CONTENT OR INFORMATION YOU MAY DOWNLOAD, USE, MODIFY, OR RELY UPON.</p> <p>IF THE RELEVANT JURISDICTION DOES NOT ALLOW THE EXCLUSION OR LIMITATION OF DIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, PORTIONS OF THESE LIMITATIONS MAY NOT APPLY TO YOU.</p> </section> <section id="provisions"> <h2>General Provisions</h2> <p>This TOS constitutes the complete and exclusive agreement between you and us relating to the subject matter that it covers, and it supersedes all prior versions. You also may be subject to additional terms and conditions that may apply when you use of O'Reilly products or services, or those of any third party. If a supplemental term conflicts with this TOS, the supplemental term will prevail. You agree that we may amend this TOS at any time by posting the amended terms on this site, without notice to you. Your use of the site after such posting will constitute consent to the modified TOS. A current version of this TOS will always be available at <a href="https://www.oreilly.com/terms/">https://www.oreilly.com/terms/</a>. It is your responsibility to review this TOS from time-to-time in order to be informed of TOS modifications.</p> <p>California law and controlling U.S. federal law govern this TOS, any action related to this TOS, and/or your use of the site. No choice of law rules of any jurisdiction will apply to any dispute under this TOS. You and O'Reilly agree to submit to the personal and exclusive jurisdiction of the courts located within the county of San Francisco, California, U.S.A. You expressly understand and agree that any dispute, claim or controversy between you and O'Reilly arising out of or in connection with this TOS, or your use of the site, must be brought no later than one (1) year from the date the alleged claim occurred or arose.</p> <p>No failure to exercise promptly any right under this TOS will create a continuing waiver or any expectation of non-enforcement. If any provision of this TOS is held to be invalid by a court of competent jurisdiction, you agree that such provision will be replaced with a new provision that accomplishes the original purpose, and the other provisions of this TOS will remain in full force and effect.</p> </section> </div> </section> </main> <footer id="footer" class="footer"> <div class="content"> <div class="footer-main" aria-label="company info"> <div class="footer-mainLeft"> <div class="footer-mainLeftOne"> <div class="footer-approach"> <h2 class="footer-header"><a href="/about/">About O&rsquo;Reilly</a></h2> <ul class="footer-links"> <li><a href="/work-with-us.html">Teach/write/train</a></li> <li><a href="/careers/">Careers</a></li> <li><a href="/press/">O&rsquo;Reilly news</a></li> <li><a href="/press/media-coverage.html">Media coverage</a></li> <li><a href="/partner/signup.csp">Community partners</a></li> <li><a href="/affiliates/">Affiliate program</a></li> <li><a href="/online-learning/rfp.html">Submit an RFP</a></li> <li><a href="/diversity/">Diversity</a></li> <li><a href="/content-marketing-solutions.html" id="footerSponsorshipLink">O&rsquo;Reilly for marketers</a></li> </ul> </div> </div> <div class="footer-mainLeftTwo"> <div class="footer-contact"> <h2 class="footer-header"><a href="/online-learning/support/">Support</a></h2> <ul class="footer-links"> <li><a href="/about/contact.html">Contact us</a></li> <li><a href="/emails/newsletters/">Newsletters</a></li> <li><a href="/privacy.html">Privacy policy</a></li> <li><a href="/about/oreilly-approach-to-generative-ai.html">AI policy</a></li> </ul> <a href="https://www.linkedin.com/company/oreilly-media" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>linkedin-logo</title><path class="cls-1" d="M17.43,13.53v0l0,0ZM16.12,0A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0ZM11.77,22.92H8.12v-11h3.65ZM9.94,10.44h0a1.89,1.89,0,0,1-2-1.89A1.91,1.91,0,0,1,10,6.65a1.9,1.9,0,1,1,0,3.79Zm15,12.48H21.28V17.05c0-1.48-.53-2.49-1.85-2.49a2,2,0,0,0-1.88,1.34,2.63,2.63,0,0,0-.12.89v6.13H13.79s.05-10,0-11h3.64V13.5a3.63,3.63,0,0,1,3.29-1.82c2.4,0,4.21,1.57,4.21,4.95Z"/></svg></a> <a href="https://www.youtube.com/user/OreillyMedia" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>youtube-logo</title><path class="cls-1" d="M18.35,18.68a.89.89,0,0,0-.86.63V16.94h-1v7.59h1v-.59a.92.92,0,0,0,.89.74c.52,0,.86-.36,1-1.07a8.56,8.56,0,0,0,.14-1.9,10.47,10.47,0,0,0-.12-1.93C19.21,19.05,18.87,18.68,18.35,18.68Zm.09,4.14c-.05.52-.2.77-.45.77s-.43-.21-.49-.63a7.22,7.22,0,0,1,0-1c0-.72,0-1.14,0-1.26.07-.58.23-.88.51-.88s.4.27.46.79c0,.09,0,.47,0,1.13S18.46,22.71,18.44,22.82ZM8.61,18.19H9.86v6.34H11V18.19H12.2V16.94H8.61Zm7.71-6.12c.27,0,.43-.22.49-.66,0-.09,0-.45,0-1.07V9.78c0-.58,0-.93,0-1-.07-.43-.23-.65-.48-.65s-.41.19-.48.57a8.79,8.79,0,0,0,0,1v.53c0,.71,0,1.09,0,1.16C15.88,11.82,16.05,12.07,16.32,12.07Zm-1.74,10.4a2.92,2.92,0,0,1-.06.71c-.07.25-.2.37-.4.37s-.32-.11-.38-.34a2.63,2.63,0,0,1-.05-.66V18.83h-1v4.48c0,.91.33,1.37,1,1.37A1,1,0,0,0,14.6,24v.57h1v-5.7h-1Zm7.1-3.79a1.35,1.35,0,0,0-1.22.59,2.48,2.48,0,0,0-.3,1.07c0,.23,0,.61,0,1.16s0,1.13,0,1.37a2.93,2.93,0,0,0,.35,1.27,1.25,1.25,0,0,0,1.14.54,1.36,1.36,0,0,0,1.13-.45,2.29,2.29,0,0,0,.37-1.43s0-.07,0-.11v-.12h-1c0,.75-.17,1.12-.51,1.12s-.38-.18-.45-.56a4.68,4.68,0,0,1-.06-.9c0-.18,0-.31,0-.37h2v-.43a4.86,4.86,0,0,0-.3-2.11A1.28,1.28,0,0,0,21.68,18.68ZM22.15,21h-1c0-.05,0-.11,0-.16v-.08a1.64,1.64,0,0,1,.11-.8.39.39,0,0,1,.38-.23.42.42,0,0,1,.43.33,2.32,2.32,0,0,1,.07.7Zm-6-21A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0Zm2.51,7.2h1V11a2.52,2.52,0,0,0,.06.66c.06.23.18.34.38.34s.34-.12.41-.37a3.76,3.76,0,0,0,.05-.71V7.2h1v5.74h-1v-.57a1,1,0,0,1-.93.72c-.66,0-1-.46-1-1.38ZM15,8a1.29,1.29,0,0,1,1.33-.92A1.3,1.3,0,0,1,17.65,8a6.77,6.77,0,0,1,.23,2.1,6.77,6.77,0,0,1-.23,2.1,1.3,1.3,0,0,1-1.32.92A1.29,1.29,0,0,1,15,12.17a6.77,6.77,0,0,1-.23-2.1A6.86,6.86,0,0,1,15,8ZM11.45,5.3l.89,2.87.88-2.87H14.4L12.88,9.7v3.24h-1.1V9.7L10.24,5.3ZM24.93,23.91a3,3,0,0,1-3,3h-12a3,3,0,0,1-3-3V18.05a3,3,0,0,1,3-3h12a3,3,0,0,1,3,3Z"/></svg></a> </div> <div class="footer-international"> <h2 class="footer-header">International</h2> <ul class="footer-links"> <li><a href="https://www.oreilly.com/anz/">Australia &amp; New Zealand</a></li> <li><a href="https://oreilly.hk/">Hong Kong &amp; Taiwan</a></li> <li><a href="https://oreillylearning.in/">India</a></li> <li><a href="https://oreilly.id/">Indonesia</a></li> <li><a href="https://www.oreilly.co.jp/index.shtml">Japan</a></li> </ul> </div> </div> </div> <div class="footer-download" id="download-info"> <h2 class="footer-header">Download the O&rsquo;Reilly App</h2> <p>Take O&rsquo;Reilly with you and learn anywhere, anytime on your phone <span class="nowrap">and tablet.</span></p> <div class="footer-downloadLinks"> <a href="https://itunes.apple.com/us/app/safari-to-go/id881697395"><img src="https://cdn.oreillystatic.com/oreilly/images/app-store-logo.png" alt="Apple app store" /></a> <a href="https://play.google.com/store/apps/details?id=com.safariflow.queue"><img src="https://cdn.oreillystatic.com/oreilly/images/google-play-logo.png" alt="Google play store" /></a> </div> </div> <div class="footer-download" id="tv-info"> <h2 class="footer-header">Watch on your big screen</h2> <p>View all O&rsquo;Reilly videos, Superstream events, and Meet the Expert sessions on your <span class="nowrap">home TV.</span></p> <div class="footer-downloadLinks"> <a href="https://channelstore.roku.com/details/c8a2d0096693eb9455f6ac165003ee06/oreilly"><img src="https://cdn.oreillystatic.com/oreilly/images/roku-tv-logo.png" alt="Roku Players and TVs" /></a> <a href="https://www.amazon.com/OReilly-Media-Inc/dp/B087YYHL5C/ref=sr_1_2?dchild=1&keywords=oreilly&qid=1604964116&s=mobile-apps&sr=1-2"><img src="https://cdn.oreillystatic.com/oreilly/images/amazon-appstore-logo.png" alt="Amazon appstore" /></a> </div> </div> <div class="footer-donotsell" id="donotsell-info"> <h2 class="footer-header"><a href="https://www.oreilly.com/privacy.html?donotsell=show">Do not sell or share my personal information</a></h2> </div> </div> <div class="footer-subfooter"> <a href="https://www.oreilly.com" title="home page" aria-current="page"> <img class="footer-subfooterLogo" id="footer-subfooterLogo" src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"> </a> <p>&copy; 2024, O&rsquo;Reilly Media, Inc. All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.</p> <p><a href="/terms/">Terms of service</a> &bull; <a href="/privacy.html">Privacy policy</a> &bull; <a href="/about/editorial_independence.html">Editorial independence</a><span class="transparencyStatement" style="display:none;"> &bull; <a href="/modern-slavery-act-transparency-statement.html">Modern Slavery Act Statement</a></span></p> </div> </div> </footer> <script src="https://cdn.oreillystatic.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script> <script> $(function() { //Toggle isActive and mobileHidden classes for mobileNavButton $('nav #mobileNavButton').on('click', function() { var expanded = $(this).attr('aria-expanded') === 'true' || false; $(this).attr('aria-expanded', !expanded); $(this).toggleClass("isActive"); $(this).next().toggleClass("mobileHidden"); }); //Toggle isFocused class for keyboard navigation of submenus $('nav #menuList .menuList-subItem a').each(function(navItem) { $(this).on('focus', function() { $(this).parent().parent().toggleClass('isFocused'); }); $(this).on('blur', function() { $(this).parent().parent().toggleClass('isFocused'); }); }); //Toggle mobileHidden class accordian elements $('.mobileAccordian').each(function() { var $btn = $(this).find('button'); var $target = $(this).next(); $btn.on('click', function() { var expanded = $btn.attr('aria-expanded') === 'true' || false; $btn.attr('aria-expanded', !expanded); $target.toggleClass("mobileHidden"); }); }); //Search platform form action function searchSubmit(e) { e.preventDefault(); sParameter = searchForm.search.value; sParameter = encodeURIComponent(sParameter.trim()); sURL = searchForm.action + '?query=' + sParameter; window.location = sURL; //GA event for search dataLayer.push({ 'event': 'eventTracker', 'eventCat':'site search', 'eventAct':'search box', 'eventLbl':'explore our content', 'eventVal':0, 'nonInteraction': 0, }); } const searchForm = document.getElementById('js-searchForm'); searchForm.addEventListener('submit', searchSubmit); //Search button action function showNavSearch(e) { $('.menuList-item-search').addClass('overlay'); $('.menuList-item-search input#search').focus(); } const searchButton = document.getElementById('js-searchButton'); searchButton.addEventListener('click', showNavSearch); //Close search button action function hideNavSearch(e) { $('.menuList-item-search').removeClass('overlay'); } const searchCloseButton = document.getElementById('js-searchCloseButton'); searchCloseButton.addEventListener('click', hideNavSearch); //"Try Now" nav button tracking $('#nav-tryNow').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'try now', 'eventVal':0, 'nonInteraction': 0, }); }); //"Sign in" nav button tracking $('#nav-signIn').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'sign in', 'eventVal':0, 'nonInteraction': 0, }); }); //"O'Reilly Platform" nav button tracking $('#nav-platform').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'oreilly platform', 'eventVal':0, 'nonInteraction': 0, }); }); }); (function(document, history, location) { var HISTORY_SUPPORT = !!(history && history.pushState); FIXED_HEADER_HEIGHT = document.querySelector('body > header').offsetHeight; FIXED_HEADER_HEIGHT += 20; var anchorScrolls = { ANCHOR_REGEX: /^#[^ ]+$/, OFFSET_HEIGHT_PX: FIXED_HEADER_HEIGHT, /** * Establish events, and fix initial scroll position if a hash is provided. */ init: function() { this.scrollToCurrent(); window.addEventListener('hashchange', this.scrollToCurrent.bind(this)); document.body.addEventListener('click', this.delegateAnchors.bind(this)); }, /** * Return the offset amount to deduct from the normal scroll position. * Modify as appropriate to allow for dynamic calculations */ getFixedOffset: function() { return this.OFFSET_HEIGHT_PX; }, /** * If the provided href is an anchor which resolves to an element on the * page, scroll to it. * @param {String} href * @return {Boolean} - Was the href an anchor. */ scrollIfAnchor: function(href, pushToHistory) { var match, rect, anchorOffset; if(!this.ANCHOR_REGEX.test(href)) { return false; } match = document.getElementById(href.slice(1)); if(match) { rect = match.getBoundingClientRect(); anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset(); // Wait 1ms and scroll. It wasn't consistently scrolling immediately. setTimeout(function(){ window.scroll(window.pageXOffset, anchorOffset); }, 1); // Add the state to history as-per normal anchor links if(HISTORY_SUPPORT && pushToHistory) { history.pushState({}, document.title, location.pathname + href); } } return !!match; }, /** * Attempt to scroll to the current location's hash. */ scrollToCurrent: function() { this.scrollIfAnchor(window.location.hash); }, /** * If the click event's target was an anchor, fix the scroll position. */ delegateAnchors: function(e) { var elem = e.target; if( elem.nodeName === 'A' && this.scrollIfAnchor(elem.getAttribute('href'), true) ) { e.preventDefault(); } } }; window.addEventListener( 'DOMContentLoaded', anchorScrolls.init.bind(anchorScrolls) ); })(window.document, window.history, window.location); </script><script type="text/javascript" src="/bdxdF5/wgY/XHI/Eb9JVw/aYLOwNS2r4zN/WRZ9AQ/HAN/pekpRbB4"></script><link rel="stylesheet" type="text/css" href="/bdxdF5/wgY/XHI/Eb9JVw/GG/clJdAQ/JHU/DIC4SMDVX"> <script src="/bdxdF5/wgY/XHI/Eb9JVw/GG/clJdAQ/WDg/cLU9Qdy4p" async defer></script> <div id="sec-overlay" style="display:none;"> <div id="sec-container"> </div> </div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10