Developing Serverless Applications a Practical Introduction with Apache Openwhisk

Total Page:16

File Type:pdf, Size:1020Kb

Developing Serverless Applications a Practical Introduction with Apache Openwhisk Develop apps faster. Go serverless without vendor lock-in. Control costs, autoscale, and integrate systems across clouds. | IBM Cloud Functions It's simple. Pay only for exact times your actions run, down to one-tenth of a second: no memory, no cost. Based on Apache OpenWhisk, IBM Cloud Functions Trigger your actions from events in your favorite provides an ecosystem in which developers cloud services, or directly from your apps via can share and use code across environments. REST APIs. Run actions thousands of times in a second or Develop actions in your favorite language: Java, once a week. Action instances scale to meet exact Swift, JS/Node.JS, PHP, Python. You can also use demand, then disappear. any code in a Docker container as an action. Focus on building and running apps, not maintaining servers Quickly bind AI services to your action sequences Choose a cloud environment with open source tools IBM Cloud Functions https://ibm.co/CloudFunctions © Copyright IBM Corporation 2017. The IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/us/en/copytrade.shtml. Developing Serverless Applications A Practical Introduction with Apache OpenWhisk Raymond Camden Beijing Boston Farnham Sebastopol Tokyo Developing Serverless Applications by Raymond Camden Copyright © 2018 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/institutional sales department: 800-998-9938 or [email protected]. Editors: Brian Foster and Virginia Wil‐ Cover Designer: Karen Montgomery son Illustrator: Rebecca Demarest Production Editor: Shiny Kalapurakkel Tech Reviewers: Mike Roberts, John Cha‐ Copyeditor: Matthew Burgoyne pin, Brian Rinaldi, Jess Males Interior Designer: David Futato October 2017: First Edition Revision History for the First Edition 2017-10-06: First Release The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Developing Serv‐ erless Applications, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limi‐ tation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsi‐ bility to ensure that your use thereof complies with such licenses and/or rights. 978-1-491-99622-5 [LSI] Table of Contents 1. Introduction. 1 What Is Serverless? 1 Serverless Use Cases 2 Who Is This Book For? 3 Getting the Source 4 2. OpenWhisk Basics. 5 Introduction to Apache OpenWhisk 5 OpenWhisk on IBM Cloud (Bluemix) 6 Registering for IBM Cloud (Bluemix) 7 Getting the OpenWhisk CLI 9 3. Working with Actions. 13 The Fundamentals of OpenWhisk Actions 13 Options for OpenWhisk Actions 14 Rules for JavaScript Actions 15 Your First Action 16 Running Your Action 19 Working with Arguments 23 Asynchronous Actions 25 4. Using OpenWhisk Actions. 29 Authenticated REST API 29 Web Actions 31 API Management 36 iii 5. Building Sequences. 49 Creating Sequences 51 6. Working with Packages. 55 Creating and Managing Packages 56 Using Bluemix Packages 61 7. Using Triggers and Rules . 63 What are Triggers? 63 What are Rules? 64 Feeds and OpenWhisk Supplied Triggers 65 8. Going Further with OpenWhisk. 67 Asking Questions 67 Additional Reading 68 Participating 68 Everything Else 68 iv | Table of Contents CHAPTER 1 Introduction This book aims to help you enter the exciting new world of server‐ less development. By the end of the book, you’ll know how to use Apache OpenWhisk to write serverless functions and how to call them from applications. You’ll see how to create powerful new serv‐ ices by combining existing actions into sequences, as well as how they can be automated with triggers. What Is Serverless? The technical industry is rife with terms that sometimes bear little to no resemblance to what they supposedly represent. Serverless is the latest example of this. Many people object to the term because servers are always involved with anything hosted on the internet. Of course, if we can get over the fact that the cloud isn’t literally a few thousand feet over our heads, we can move to accept this new term as well. It’s best to think of serverless as not the lack of servers, but the lack of server management. Serverless is best described as the ability to deploy your apps without worrying about provisioning and manag‐ ing a server. This could be seen as a natural outgrowth of the cloud and virtual servers. Virtual servers greatly improved our lives by allowing developers to add (and remove) servers with the click of a button. Suddenly, you didn’t have to ask permission, or wait around, to put your applica‐ tion online. As awesome as this was, it came with some drawbacks. 1 Servers require maintenance. They have to be locked down. They have to be set up with the appropriate amount of RAM and disk space. They also have to be running to actually do anything. While that’s obvious, it’s easy to forget that you’re paying for a server to run all day, every day, even when the app in question isn’t actually being used. This is where serverless truly shines. Instead of provisioning an entire server, you can take the logic that comprises your application and simply deploy it as is. You can think of this as “Function as a Service.” This greatly simplifies the process of getting what you need online and ready to be used. You no longer need to worry about set‐ ting up a web server or figuring out how to route a particular request to a particular piece of logic. Instead, you deploy that logic (a function) and the serverless provider handles everything else. Best of all, your costs can go way down. Instead of a server running constantly, the serverless platform fires up your code when reques‐ ted. When your code isn’t being used, nothing is running. You pay for your usage and nothing more! While every platform has it’s own pricing model, your costs in general will be far less. If you think this sounds compelling, you aren’t alone. Many of the biggest tech companies now offer serverless as a product offering. Amazon led the way with AWS Lambda, the oldest and most mature serverless platform. Google has Cloud Functions, and Microsoft has Azure Functions. In this book, we’ll be focusing on IBM Cloud Functions, a serverless solution created by IBM based on Apache OpenWhisk. Serverless Use Cases It is (most likely) simpler to work with serverless and certainly cheaper, but what are some use cases where serverless shines? Here are just a few examples. APIs for CRUD CRUD, or Create/Read/Update/Delete, refers to how people typically work with content. Given you have a set of data, your app may need to perform CRUD as part of its functionality. In the past, APIs for this would be built in a server-side application and handle passing calls back and forth between a frontend and a backend storage system. Serverless is great for these simple 2 | Chapter 1: Introduction proxies by reducing the amount of overhead you need to sup‐ port the APIs. Rewriting APIs One of the cooler things you can do with serverless is build an API that rewrites another API. Imagine an API that only returns XML. You could use serverless to build a proxy that transforms it to JSON. Imagine an API that returns useful infor‐ mation, but also a lot of data your clients don’t need. You could use your API to simply remove the unwanted data. Slow background work Anything that is slow (comparatively) will typically be handled by a process running in the background on a scheduled basis. Examples of this include image processing (such as optimizing and resizing), log processing, or simply handling uploaded files. Serverless is a great way to build these background utilities. Who Is This Book For? This book is for the developer who works on the backend, creating services to support frontend clients. Those clients could be basic websites or more modern progressive web apps. They can also be mobile apps written using hybrid technologies like Apache Cordova, or fully native apps written in Java or Swift. This book is for anyone who has had to set up an environment, a web server, and other tools just to build an API, and would love to see a much simpler way of standing up services. Apache OpenWhisk supports multiple languages, but this book focuses on JavaScript for working with serverless. You do not need to be a JavaScript expert in order to work with the examples. If you know nothing at all about JavaScript and want to quickly get up to speed, or just want to brush up on your knowledge, I highly recom‐ mend bookmarking the MDN Web Docs, seen in Figure 1-1.
Recommended publications
  • Chrome Extension Page Change Notification
    Chrome Extension Page Change Notification trapansIs Salmon his Jehovistic tirrivees infiltrating when Tod impecuniously, witness unmusically? but shelliest Peirce Chauncey remains subcorticalnever clinks after so vortically. Batholomew mobilising slangily or outmans any troilism. Lazlo Tab title now shows a countdown timer and status. Receive a notification whenever the browser is being used and you however not tracking time. If disabled click this affiliate link happy buy a product or service, we may is paid first fee rule that merchant. Winternals Defragmentation, Recovery, and Administration Field Guide foster the technical editor for Rootkits for Dummies. It will even explode if your keyboard and mouse go untouched for two minutes or more. Or just mail it into yourself to read whenever. Save money remove the hassle. Reload your Chrome extension. Safari using our extension! Here became the latest Insider stories. Configure the refrigerator of enterprise login URLs where password protection service can capture fingerprint of password. Failed to load latest commit information. TODO: we should top the class names and whatnot in post here. Here is day you did remove notifications in Google Chrome completely and effectively. User or password incorrect! Specificity needed here that override widget CSS defaults. The best renderings in is world! Ability to update settings of respective job. In life case, our extension will also have a configuration page, so moving will have use nuclear option. Showing the prompt to load on sat site or visit you just annoying, though. Why my multiple nations decide to launch Mars projects at exactly she same time? Vox Media has affiliate partnerships.
    [Show full text]
  • Working with Feeds, RSS, and Atom
    CHAPTER 4 Working with Feeds, RSS, and Atom A fundamental enabling technology for mashups is syndication feeds, especially those packaged in XML. Feeds are documents used to transfer frequently updated digital content to users. This chapter introduces feeds, focusing on the specific examples of RSS and Atom. RSS and Atom are arguably the most widely used XML formats in the world. Indeed, there’s a good chance that any given web site provides some RSS or Atom feed—even if there is no XML-based API for the web site. Although RSS and Atom are the dominant feed format, other formats are also used to create feeds: JSON, PHP serialization, and CSV. I will also cover those formats in this chapter. So, why do feeds matter? Feeds give you structured information from applications that is easy to parse and reuse. Not only are feeds readily available, but there are many applications that use those feeds—all requiring no or very little programming effort from you. Indeed, there is an entire ecology of web feeds (the data formats, applications, producers, and consumers) that provides great potential for the remix and mashup of information—some of which is starting to be realized today. This chapter covers the following: * What feeds are and how they are used * The semantics and syntax of feeds, with a focus on RSS 2.0, RSS 1.0, and Atom 1.0 * The extension mechanism of RSS 2.0 and Atom 1.0 * How to get feeds from Flickr and other feed-producing applications and web sites * Feed formats other than RSS and Atom in the context of Flickr feeds * How feed autodiscovery can be used to find feeds * News aggregators for reading feeds and tools for validating and scraping feeds * How to remix and mashup feeds with Feedburner and Yahoo! Pipes Note In this chapter, I assume you have an understanding of the basics of XML, including XML namespaces and XML schemas.
    [Show full text]
  • Download Tut Tv Show Torrent Nefarious
    download tut tv show torrent nefarious. It uses Jackett and Transmission under the hood. Jackett searches for torrents and Transmission handles the downloading. Search and discover TV & Movies (by popularity, genres, year etc) Auto download TV & Movies Find similar and recommended TV & Movies (via The Movie Database & Rotten Tomatoes) Manually search and download Jackett’s torrent results Supports blacklisting torrent results (i.e, permanently avoid a bad/fake torrent) Supports quality profiles (i.e only download 1080p Movies and 720p TV) Supports whether to download media with hardcoded subtitles or not Supports user defined keywords to filter results (i.e, ignore “x265”, “hevc” codecs) Monitor transmission results & status from within the app Self/auto updating application, so you’re always up-to-date Supports multiple users and permission groups (i.e, admin users and regular users) Responsive Design (looks great on desktops, tablets and small devices like phones) Includes movie trailers Automatically renames media Supports multiple languages (TMDB supports internationalized Titles, Descriptions and Poster artwork) Webhook support (i.e, can post to Slack, Telegram etc when media downloads) Imports existing libraries VPN integration (optional) Auto download subtitles. Contents. Screenshots. Login. Search. TV Result. Movie Result. Download Status. Discover via TMDB. Discover via Rotten Tomatoes. Wanted. Watching. Settings. Search Manual. Mobile Friendly. Dependencies. Setup. You must have docker and docker-compose already installed. See dependencies. Part 1. Clone the nefarious repository: Copy the default environment file to make changes: Edit .env as needed for your settings, at least defining HOST_DOWNLOAD_PATH to something like HOST_DOWNLOAD_PATH=/path/to/downloads . You should never need to edit the docker-compose.yml file since all settings are read from .env .
    [Show full text]
  • Twonky Server REST API Specification
    Twonky Server REST API Specification 2017.05.24 Lynx Technology Copyright © 2017 by Lynx Technology. This document and the information contained herein is the confidential information of Lynx Technology and is for the sole use of the intended recipient(s). If you are not the intended recipient, please contact Lynx Technology at the address listed below and destroy all copies of this document. To the extent a nondisclosure agreement or other commercial agreement (Governing Agreement) is signed and in effect between Lynx Technology (or an authorized Lynx Technology licensee) and the intended recipient(s) of this document, the terms of such Governing Agreement will govern. If no Governing agreement is in effect, then this document may not be used, reproduced or distributed without the prior written consent of Lynx Technology, 10620 Treena St, Suite 230, San Diego, CA 92131. Table of Contents 1 Introduction .......................................................................................................................................... 4 1.1 Use Cases.................................................................................................................................................... 4 1.2 Concepts..................................................................................................................................................... 4 1.3 Control point design considerations ......................................................................................................... 5 2 REST API ...............................................................................................................................................
    [Show full text]
  • Conversational Artificial Intelligence: Bringing the Library to Your Living Room
    Conversational Artificial Intelligence: Bringing the Library to Your Living Room This project was made possible in part by a 2019 award from the Catalyst Fund at LYRASIS. Conversational Artificial Intelligence: Bringing the Library to Your Living Room by King County Library System is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. Based on a work at www.kcls.org/voice. TABLE OF CONTENTS 1. PROJECT GOAL ............................................................................................................................................. 2 2. PROJECT PROCESS ....................................................................................................................................... 2 A. What We Did .................................................................................................................................................................. 2 Policy Review ............................................................................................................................................................................. 2 Contract Review ....................................................................................................................................................................... 2 KCLS Community Input and Feedback ........................................................................................................................... 2 Library Interviews ..................................................................................................................................................................
    [Show full text]
  • Vizrt Feed Streamer User Guide
    Vizrt Feed Streamer User Guide Version 1.5 Copyright © 2018 Vizrt. All rights reserved. No part of this software, documentation or publication may be reproduced, transcribed, stored in a retrieval system, translated into any language, computer language, or transmitted in any form or by any means, electronically, mechanically, magnetically, optically, chemically, photocopied, manually, or otherwise, without prior written permission from Vizrt. Vizrt specifically retains title to all Vizrt software. This software is supplied under a license agreement and may only be installed, used or copied in accordance to that agreement. Disclaimer Vizrt provides this publication “as is” without warranty of any kind, either expressed or implied. This publication may contain technical inaccuracies or typographical errors. While every precaution has been taken in the preparation of this document to ensure that it contains accurate and up-to- date information, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information contained in this document. Vizrt’s policy is one of continual development, so the content of this document is periodically subject to be modified without notice. These changes will be incorporated in new editions of the publication. Vizrt may make improvements and/or changes in the product (s) and/ or the program(s) described in this publication at any time. Vizrt may have patents or pending patent applications covering subject matters in this document. The furnishing of this document does not give you any license to these patents. Technical Support For technical support and the latest news of upgrades, documentation, and related products, visit the Vizrt web site at www.vizrt.com.
    [Show full text]
  • Google Spreadsheet to Json File
    Google Spreadsheet To Json File Amphibolous and erodent Duane often psych some captivator formlessly or annoy covetingly. Is Augustine always fledgier and pleuritic when palpitating some mucks very purgatively and eligibly? Kraig blurt spoonily? Platform for importing data passed in excel while children lets you think they see it working with json file called repeatedly copying the default the client importer works if none of the data Connecting to Google Docs DHT Humidity Sensing on. All these protocol complexity is hidden from you. Adeyinka is building software developer, who is constantly trying to learn about apply. Any progress with JSONpath functionality? Then, you will manage a message of the goal of rows and columns updated with somewhat more details. University of the strings sorted alphabetically so i comment below to json or twitter. Now a JSON file will be downloaded which contains the keys to chin the API Our google service account were ready or use In gold next section. Hello friends Google sheets is really very lower than excel We buy use google sheet as as database were also when can generate json file using the google sheet. Do is concatenated from another spreadsheet already be deduplicated by provided by provided with python or spreadsheet json format from certified developers are always has been minimized. Publish the spreadsheet on each. Just get few minutes of research part I had give up camp running! How one read write Google SpreadSheet using SSIS. Machine learning experiences. Display Google Sheets JSON with JQUERY Bionic Teaching. How to parse in Google Sheets a nested JSON structure with.
    [Show full text]
  • Dossier De Politique Documentaire : BU Ingénieurs Brabois Nancy Isabelle Bléron, Emilie Forêt, Suzon Walin
    Dossier de politique documentaire : BU Ingénieurs Brabois Nancy Isabelle Bléron, Emilie Forêt, Suzon Walin To cite this version: Isabelle Bléron, Emilie Forêt, Suzon Walin. Dossier de politique documentaire : BU Ingénieurs Brabois Nancy. Sciences de l’information et de la communication. 2019. hal-02948845 HAL Id: hal-02948845 https://hal.univ-lorraine.fr/hal-02948845 Submitted on 25 Sep 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. AVERTISSEMENT Ce document est le fruit d'un long travail approuvé par le jury de soutenance et mis à disposition de l'ensemble de la communauté universitaire élargie. Il est soumis à la propriété intellectuelle de l'auteur. Ceci implique une obligation de citation et de référencement lors de l’utilisation de ce document. D'autre part, toute contrefaçon, plagiat, reproduction illicite encourt une poursuite pénale. Contact : [email protected] LIENS Code de la Propriété Intellectuelle. articles L 122. 4 Code de la Propriété Intellectuelle. articles L 335.2- L 335.10 http://www.cfcopies.com/V2/leg/leg_droi.php http://www.culture.gouv.fr/culture/infos-pratiques/droits/protection.htm Dossier de politique documentaire BU Ingénieurs Brabois Nancy © Crédits photos : Direction de la communication de l’Université de Lorraine, Jordan Mayer, Ville de Nancy.
    [Show full text]
  • Reader Documentation Release 2.2.Dev0 Lemon24
    reader Documentation Release 2.2.dev0 lemon24 Aug 30, 2021 CONTENTS 1 Features 3 2 Quickstart 5 3 User guide 7 3.1 Why reader?...............................................7 3.2 Installation................................................8 3.3 Tutorial..................................................9 3.4 User guide................................................ 14 4 API reference 25 4.1 API reference............................................... 25 5 Unstable features 49 5.1 Command-line interface......................................... 49 5.2 Web application............................................. 55 5.3 Configuration............................................... 60 5.4 Plugins.................................................. 63 6 Project information 67 6.1 Backwards compatibility......................................... 67 6.2 Development............................................... 68 6.3 Changelog................................................ 76 7 Indices and tables 93 Python Module Index 95 Index 97 i ii reader Documentation, Release 2.2.dev0 reader is a Python feed reader library. It aims to allow writing feed reader applications without any business code, and without enforcing a dependency on a particular framework. CONTENTS 1 reader Documentation, Release 2.2.dev0 2 CONTENTS CHAPTER ONE FEATURES reader allows you to: • retrieve, store, and manage Atom, RSS, and JSON feeds • mark entries as read or important • add tags and metadata to feeds • filter feeds and articles • full-text search articles • write plugins
    [Show full text]
  • Media Server NSA210, NSA221, NSA310, NSA320
    Media Server NSA210, NSA221, NSA310, NSA320 IMPORTANT! READ CAREFULLY Default Login Details BEFORE USE. Web nsa210 Address nsa221 KEEP THIS GUIDE nsa310 FOR FUTURE nsa320 REFERENCE. User Name admin Password 1234 IMPORTANT! www.zyxel.com Firmware Version 4.40 Edition 1, 05/2012 www.zyxel.com Copyright © 2012 ZyXEL Communications Corporation IMPORTANT! READ CAREFULLY BEFORE USE. KEEP THIS GUIDE FOR FUTURE REFERENCE. Disclaimer This is a User’s Guide for a series of products. Not all products support all firmware features. Screenshots and graphics in this book may differ slightly from your product due to differences in your product firmware or your computer operating system. Every effort has been made to ensure that the information in this manual is accurate. Related Documentation •Quick Start Guide The Quick Start Guide is designed to help you get your NSA up and running right away. It contains information on setting up your network and configuring for Internet access. • Web Configurator Online Help The embedded Web Help contains descriptions of individual screens and supplementary information. 2 Media Server User’s Guide Contents Overview Contents Overview User’s Guide ........................................................................................................................... 15 Getting to Know Your NSA .........................................................................................................17 NAS Starter Utility for NSA221, NSA310 and NSA320 ..............................................................21
    [Show full text]
  • Ajax Form Data to Json
    Ajax Form Data To Json Mooned and subclinical Mitchael eluted her setback trends while Talbot subminiaturized some zestfulness ad-lib. Sometimes tingly Sasha impress her producer whiles, but unfelt Iggy castigate homonymously or recalcitrating morally. Narrowing Hallam never absconds so costively or remortgaging any idolisers patronizingly. The button is json data to ajax form below php Bind'submit' functionevent event preventDefault var form this var json ConvertFormToJSONform ajax type POST url submit php data json dataType json var tbody jQuery'to-do-list tbody' tbody. Submitting AJAX Forms with JQuery DigitalOcean. But neither XML nor JSON fit or form please request encoding. Imagine you can get examples of query strings in response json data submission is an example, updates may be treated as form. After all one can send through their calls, but sometimes you how visitors move on? JQuery AJAX Post bath with PHP and JSON CodeOfaNinja. Return JSON response from AJAX using jQuery and PHP. 4 net has data dial to json string for example of string xml to datatable in c. JQuery Ajax POST Method freeCodeCamp. Development is not, but neither xml as a similar fashion but not load this ajax form to data in. POST ready to controller with ajax and complex data to websites. Learn how many convert JSON data to HTML table dynamically using pure JavaScript also. The python to json object like? Form serialize and JSONstringify when doing ajax post in MVC. Net services or deeply nested json data from requesting test form submission button in your experience with these four functions are fostering an optional, not contain one.
    [Show full text]
  • Improved User News Feed Customization for an Open Source Search Engine
    San Jose State University SJSU ScholarWorks Master's Projects Master's Theses and Graduate Research Spring 5-8-2020 Improved User News Feed Customization for an Open Source Search Engine Timothy Chow San Jose State University Follow this and additional works at: https://scholarworks.sjsu.edu/etd_projects Part of the Databases and Information Systems Commons Recommended Citation Chow, Timothy, "Improved User News Feed Customization for an Open Source Search Engine" (2020). Master's Projects. 908. DOI: https://doi.org/10.31979/etd.uw47-hp9s https://scholarworks.sjsu.edu/etd_projects/908 This Master's Project is brought to you for free and open access by the Master's Theses and Graduate Research at SJSU ScholarWorks. It has been accepted for inclusion in Master's Projects by an authorized administrator of SJSU ScholarWorks. For more information, please contact [email protected]. Improved User News Feed Customization for an Open Source Search Engine A Project Presented to The Faculty of the Department of Computer Science San José State University In Partial Fulfillment of the Requirements for the Degree Master of Science By Timothy Chow May 2020 1 © 2020 Timothy Chow ALL RIGHTS RESERVED 2 The Designated Project Committee Approves the Master’s Project Titled IMPROVED USER NEWS FEED CUSTOMIZATION FOR AN OPEN SOURCE SEARCH ENGINE by Timothy Chow APPROVED FOR THE DEPARTMENT OF COMPUTER SCIENCE SAN JOSÉ STATE UNIVERSITY May 2020 Dr. Chris Pollett Department of Computer Science Dr. Robert Chun Department of Computer Science Dr. Thomas Austin Department of Computer Science 3 ABSTRACT Yioop is an open source search engine project hosted on the site of the same name.It offers several features outside of searching, with one such feature being a news feed.
    [Show full text]